Avatar billede pfp Nybegynder
17. juli 2002 - 19:50 Der er 27 kommentarer og
1 løsning

Movefile og Rename

Hej,

Jeg har lidt problemer med Movefile og Rename funktionerne..så jeg håber jeg kan få lidt hjælp her:

Jeg vil gerne have flyttet en fil jeg lige har uploadet og derefter have den omdøbt (eller omvendt - det er ligemeget).

Jeg ved jeg skal bruge Movefile, men kan ikke rigtig få det til at funke.

Jeg vil meget gerne have hjælp til at flytte den fil jeg lige har uploadet et niveau op og så ind i en mappe der hedder web...altså (../web/)

/pfp
Avatar billede pfp Nybegynder
17. juli 2002 - 19:51 #1
Nårh ja forresten og så skal den omdøbes til den værdi jeg har i en variabel
Avatar billede coolcoder Nybegynder
17. juli 2002 - 21:12 #2
først af alt - hvorfor uploader du ikke filen til den rigtige mappe med det samme? Og upload-komponenter kan som regel også gemme filer med andre filnavne.

Eller vil jeg bruge move-metode og ikke movefile.

opret et filsystemobject, flyt filen og omdøb den således:
<%
set fso = server.createobject("scripting.filesystemobject")
set fil = fso.getfile([sti - evt vha mappath])
fil.move([ny sti])
fil.name = "[nyt filnavn]"
%>
Avatar billede pfp Nybegynder
17. juli 2002 - 21:24 #3
Hej,

Tak for dit svar, det vil jeg lige prøve.

Jeg uploader ikke til den rigtige mappe fordi jeg kun har skriverettihedheder til én enkelt mappe...og den ligger desværre uden for webscope (men nå sådan er det at have web-hotel).

Jeg bruger ASP Uploade vil du anbefale at bruge den til det i stedet for?

/pfp
Avatar billede coolcoder Nybegynder
17. juli 2002 - 21:32 #4
så kan du vel heller ikke flytte filen derover!? Det kræver jo også skriverettigheder
Avatar billede pfp Nybegynder
17. juli 2002 - 21:44 #5
hehe...den havde jeg ikke lige luret :-) Men du har selvfølgelig ret...men jeg har lige opdaget at jeg også har skriverettigheder i mit Grafik bibliotek.

Så mangler jeg bare at omdøbe filen efter at den er uploadet. Det er meningen at hver post i min database skal have et billede tilknyttet, og det ville derfor være smart at billedet blev omdøbt til f.eks. 3.jpg for post med ID nr. 3

Mit upload script ser sådan her ud:

<%
    Set Upload = Server.CreateObject("Persits.Upload.1")
   
    Upload.OverWritefiles = True
    Upload.SetMaxSize 100000, True
    Count = Upload.Save(Server.MapPath("../Grafik/"))
   
%>

Kan du hjælpe mig med at omdøbe igennem den komponent?

/pfp
Avatar billede pfp Nybegynder
17. juli 2002 - 22:20 #6
Jeg har fundet en metode til at omdøbe filen, men kan ikke få det til at virke når jeg skal angive destinationsnavnet:

<%
    Set Upload = Server.CreateObject("Persits.Upload.1")
   
    Upload.OverWritefiles = True
    Upload.SetMaxSize 100000, True
    Count = Upload.Save(Server.MapPath("../Grafik/"))
   

    For Each File in Upload.Files 
    Response.Write File.Name & "= " & File.Path & " (" & File.Size &")<BR><br>"
    Next

    Dim RenFile
    Set RenFile = CreateObject("Scripting.FileSystemObject")
    RenFile.MoveFile File.Path, [Destinationsnavn her...]
   
%>

Kan du hjælpe?
Avatar billede coolcoder Nybegynder
17. juli 2002 - 22:48 #7
<%
    Set Upload = Server.CreateObject("Persits.Upload.1")
   
    Upload.OverWritefiles = True
    Upload.SetMaxSize 100000, True
    Count = Upload.Save  'uden sti her, gemmes i hukommelse!
   
    For Each File in Upload.Files
      file.saveas(Server.MapPath("../Grafik/")&[filnavn]) 'gemmer fil på disk med valgt navn
    Response.Write File.Name & "= " & File.Path & " (" & File.Size &")<BR><br>"
    Next
%>
Avatar billede pfp Nybegynder
17. juli 2002 - 22:59 #8
Hej igen,

Jeg får:

Persits.Upload.1 error '800a0001'

Unspecified error

/Admin/Kode.asp, line 12


i linien:
Count = Upload.Save  'uden sti her, gemmes i hukommelse!
Avatar billede coolcoder Nybegynder
17. juli 2002 - 23:11 #9
nå, det ved jeg så ikke lige. Men hvis den anden uploader fint, tilretter du bare lige rename-funktionen:

<%
    Set Upload = Server.CreateObject("Persits.Upload.1")
   
    Upload.OverWritefiles = True
    Upload.SetMaxSize 100000, True
    Count = Upload.Save(Server.MapPath("../Grafik/"))
   
set fso = CreateObject("Scripting.FileSystemObject")

    For Each File in Upload.Files
      set f = fso.getfile(Server.MapPath("../Grafik/") & file.name)
      f.name = [nyt filnavn]
    Response.Write File.Name & "= " & File.Path & " (" & File.Size &")<BR><br>"
    Next

%>
Avatar billede pfp Nybegynder
17. juli 2002 - 23:30 #10
Hej,

Det jeg startede med at uploade virkede fint nok, men med det sidste kode du har skrevet får jeg:

Microsoft VBScript runtime error '800a0035'

File not found

/admin/Kode.asp, line 14

Linie 14:
set f = fso.getfile(Server.MapPath("../Grafik/") & file.name)
Avatar billede coolcoder Nybegynder
18. juli 2002 - 08:33 #11
så prøv at skrive:
<%
set f = fso.getfile(Server.MapPath("../Grafik/") & file.filename)
%>
Avatar billede pfp Nybegynder
18. juli 2002 - 10:05 #12
Jeg får stadig file not found i linie 14 :-(
Avatar billede pfp Nybegynder
18. juli 2002 - 10:10 #13
Hej,

Jeg har hørt en fugl synge om at det er fordi man ikke kan bruge Server.Mappath i forbindelse FSO...så kan det ikke være fordi jeg skal angive den absolutte sti?
Avatar billede coolcoder Nybegynder
18. juli 2002 - 10:15 #14
du kan sagtens bruge server.mappath sammen med FSO - den returnere jo netop en absolut sti ud fra en relativ.

Men prøv at lave en:
response.write server.mappath("../Grafik/") & file.filename

og se om den returnerer den korrekte sti. Ellers skal du ha' den tilrettet
Avatar billede pfp Nybegynder
18. juli 2002 - 10:19 #15
Hej,

Jeg snakkede Tony Fonager fra Netcoders.dk han sagde at det kunne man ikke?

Men jeg tror jeg har fået det til at virke nu:
<%
    Set Upload = Server.CreateObject("Persits.Upload.1")
   
    Upload.OverWritefiles = True
    Upload.SetMaxSize 100000, True
    Count = Upload.Save(Server.MapPath("../Grafik/"))
   
set fso = CreateObject("Scripting.FileSystemObject")

    For Each File in Upload.Files
    set f = fso.getfile(File.Path)
    f.name = "sjover.jpg"
   
    Response.Write File.Name & "= " & File.Path & " (" & File.Size &")<BR><br>"
    Next

%>

Filen bliver ihvertfald uploadet og omdøbt, så skal jeg bare lige have det tilrettet sådan den får navnet efter en Request.Form værdi.
Avatar billede coolcoder Nybegynder
18. juli 2002 - 10:24 #16
det er jo bare:
<%
...
f.name = request.form("felt") & ".jpg"
%>
Avatar billede pfp Nybegynder
18. juli 2002 - 10:52 #17
Nej jeg kan ikke bruge Request.Form fordi der er et eller andet med Binary et eller andet...Men jeg har fået det til at virke med en værdi jeg havde i en Session og det er også fint nok.

Jeg har gjort sådan her...så beholder den den originale extension:
set f = fso.getfile(File.Path)
    extension = fso.Getextensionname(File.Path)
    f.name = Session("Virksomhed") & "." & extension

Men tak for hjælpen.
Avatar billede pfp Nybegynder
18. juli 2002 - 10:53 #18
Min færdige kode ser altså sådan her ud:

<%
    Set Upload = Server.CreateObject("Persits.Upload.1")
   
    Upload.OverWritefiles = True
    Upload.SetMaxSize 100000, True
    Count = Upload.Save(Server.MapPath("../Grafik/Kunder/"))
   
set fso = CreateObject("Scripting.FileSystemObject")

    For Each File in Upload.Files
    set f = fso.getfile(File.Path)
    extension = fso.Getextensionname(File.Path)
    f.name = Session("Virksomhed") & "." & extension
   
    Response.Write File.Name & "= " & File.Path & " (" & File.Size &")<BR><br>"
    Next

%>

Men kan du så svare mig på hvorfor den siger File already exists når jeg prøver at uploade samme billede forfra?
Avatar billede coolcoder Nybegynder
18. juli 2002 - 11:09 #19
allerførst: det er selvfølgelig mig der ikke tænkte mig om. Du skal bruge Upload.form("felt"), når du bruge aspupload ;)

Det gør den fordi filnavnet jo allerede eksisterer fra først gang du uploadede billedet. Alle billeder bliver jo navngivet det sammen indtil din session ændres.

Så du skal enten finde ud af at slette evt. eksisterende fil først, eller bruge den metode jeg tidligere har beskrevet uden om fso.

ASPUpload kan gemme filer i memory, og så kan du bruge en saveas(path) til at gemme. Den mener jeg kan sættes til at overskrive automatisk
Avatar billede pfp Nybegynder
18. juli 2002 - 11:21 #20
Ja men den bruger jo Upload.OverWritefiles = True
burde det ikke være nok?
Avatar billede coolcoder Nybegynder
18. juli 2002 - 11:37 #21
både og. Det er når du omdøber filen det går galt.
du kunne fx
<%
...
extension = fso.Getextensionname(File.Path)
if fso.fileexists(f.parentfolder & "\" & Session("Virksomhed") & "." & extension) then
  fso.deletefile(f.parentfolder & "\" & Session("Virksomhed") & "." & extension)
end if
f.name = Session("Virksomhed") & "." & extension

%>
Avatar billede pfp Nybegynder
18. juli 2002 - 18:59 #22
Hej, undskyld jeg først er tilbage nu...men var nød til at tage på arbejde.

Var det ikke sådan her du mente:
<%
    Set Upload = Server.CreateObject("Persits.Upload.1")
   
    Upload.OverWritefiles = True
    Upload.SetMaxSize 100000, True
    Count = Upload.Save(Server.MapPath("../Grafik/Kunder/"))
   
set fso = CreateObject("Scripting.FileSystemObject")

    For Each File in Upload.Files
    set f = fso.getfile(File.Path)
    extension = fso.Getextensionname(File.Path)
if fso.fileexists(f.parentfolder & "\" & Session("Virksomhed") & "." & extension) then
  fso.deletefile(f.parentfolder & "\" & Session("Virksomhed") & "." & extension)
end if
f.name = Session("Virksomhed") & "." & extension
   
    Response.Write File.Name & "= " & File.Path & " (" & File.Size &")<BR><br>"
    Next

%>

Det giver stadig file already exists??
Avatar billede coolcoder Nybegynder
18. juli 2002 - 19:15 #23
ja, jeg er jo stadig på arbejde ;)

Jeg tror vi bør droppe at rename filen efter den er uploadet. Det er dobbelt-arbejde. Jeg har da så mange gange selv valgt filnavn vha. asp-upload. Noget i stil med (men kig evt. til rundt inde på www.aspupload.com):

<%
    Set Upload = Server.CreateObject("Persits.Upload.1")
   
    Upload.OverWritefiles = True
    Upload.SetMaxSize 100000, True
    Upload.Save
   

    For Each File in Upload.Files
      file.saveas(Session("Virksomhed") & "." & extension)
      Response.Write File.Name & "= " & File.Path & " (" & File.Size &")<BR><br>"

    Next

%>
Avatar billede pfp Nybegynder
18. juli 2002 - 19:30 #24
øv...den bliver ved med at sige det :-(

Jeg har kigget i dokumentationen på aspupload.com men syntes ikke rigtig jeg kan finde noget..

Hvad skal du have for at lave det?
Avatar billede pfp Nybegynder
18. juli 2002 - 19:34 #25
Jeg tænkte på om det er nødvendig med det der For Each, jeg skal på intet tidspunkt lave multiple upload??
Avatar billede coolcoder Nybegynder
18. juli 2002 - 19:53 #26
nej, det er det ikke. Du kan fx bruge en
  upload.files("[fil-input-feltnavn]")

men ellers så er det siden http://www.aspupload.com/manual_memory.html der er relevant for dig
Avatar billede pfp Nybegynder
18. juli 2002 - 20:06 #27
Kan det være fordi jeg har en forældet komponent. For selv om jeg prøver med dette eksempel fra aspupload manualen siger den file already exists...selvom der skulle være taget højde for det i denne kode:

<HTML>
<BODY>
<%
Set Upload = Server.CreateObject("Persits.Upload")
' we use memory uploads, so we must limit file size
Upload.SetMaxSize 100000, True

' Save to memory. Path parameter is omitted
Upload.Save

' Check whether a file was selected
Set File = Upload.Files("FILE1")
If Not File Is Nothing Then
  ' Obtain file name
  Filename = file.Filename

  ' check if file exists in c:\upload under this name
  If Upload.FileExists("c:\inetpub\www.givenet.dk\Grafik\Kunder\" & filename ) Then
      Response.Write "File with this name already exists."
  Else
      ' otherwise save file
      File.SaveAs "c:\inetpub\www.givenet.dk\Grafik\Kunder\" & File.Filename
      Response.Write "File saved as " & File.Path
  End If
Else ' file not selected
  Response.Write "File not selected."
End If
%>
</BODY>
</HTML>
Avatar billede pfp Nybegynder
18. juli 2002 - 22:20 #28
Hej,

Det er sgu' desværre mig der har dummet mig og byttet om på nogle filnavne...det virker perfekt de forrige forslag du er kommet med.

Tusind tak for hjælpen!

Mvh Peter
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester