Avatar billede superanden Nybegynder
26. marts 2009 - 11:17 Der er 8 kommentarer og
1 løsning

Problem med at hente filnavnet ved upload

Hej jeg har et problem.

Jeg har pga. host skift måtte skrive vores Upload script om til at benytte Persist Upload, men i den forbindelse har jeg fået et problem med at få fat i filnavnet på den ønskede fil.

Al koden virker hvis jeg selv angiver dens fil navn manuelt så nu handler det bare om at lave en streng som indeholder dens filnavn + extension. F.eks. "test.jpg"

Det jeg har forsøgt at gøre er at lave en test som bare printer filnavnet ud.

!-- #include file="Includes/conn_open.asp" -->
<%
        Dim blnError,sizeLimit,txtSV
        Dim intCount
    Dim upl
    Dim File
   
        blnError = False
        txtSV = Session("activeLanguage")
(13*)  Response.write "<br />FEJL: "&blnError
      Set upl = Server.CreateObject("Persits.Upload")
    SET File = upl.Files("FILE1")
    Response.Write "Filnavnet: " & File.name


Men jeg får følgende fejl
Microsoft VBScript runtime  error '800a01a8'
Object required
/logo_uploadfile.asp, line 13

Hvilket jeg kunne forestille mig havde noget at gøre med at det File objekt jeg laver ikke bliver oprettet rigtig? Har også prøvet med andre attributter som File.Filename men med samme fejl.
Avatar billede superanden Nybegynder
26. marts 2009 - 11:33 #1
!!!
Hov, fik sat markeringen for linje 13 forkert, det er:
Response.Write "Filnavnet: " & File.name    som er linje 13
!!!
Avatar billede j_andersen Nybegynder
26. marts 2009 - 12:07 #2
Jeg bruger persist upload som vist her, og skriver filnavne ud bagefter, se om du kan bruge noget af det.

Her en form som uploader op til 3 filer på een gang:

<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="UploadScript.asp">
      <INPUT NAME="FILE1" TYPE="FILE" class="default" SIZE="70">
      <BR>
      <INPUT NAME="FILE2" TYPE="FILE" class="default" SIZE="70">
      <BR>
      <INPUT NAME="FILE3" TYPE="FILE" class="default" SIZE="70">
      <BR>
  <INPUT TYPE=SUBMIT class="default" VALUE="Upload">
</FORM>


--------------------------------
File: UploadScript.asp

<%
filepath= Server.MapPath("..\doc") & "\" & Cstr(Year(date))

Set Upload = Server.CreateObject("Persits.Upload")

' Limit file size to 1 Mbytes, throw an exception if file is larger
Upload.SetMaxSize 1000000, True ' max 1 Mbytes files

' Create path, ignore "already exists" error
Upload.CreateDirectory filepath, True

' Intercept all exceptions to display user-friendly error
On Error Resume Next

Count = Upload.Save(filepath)
' 8 is the number of "File too large" exception

If Err.Number = 8 Then
  Response.Write "Your file is too large. Please try again."
Else
  If Err <> 0 Then
      Response.Write "An error occurred: " & Err.Description
  Else
      Response.Write "Success!"
  End If
End If

Response.Write "<p>" & Count & " file(s) uploaded to " & filepath & "</p>"

%>
Files: <BR>
<%
For Each File in Upload.Files
  sti = File.Path
  sti = mid((sti), instrrev(sti,"www")+4,100) ' www directory for htm files
  sti = replace (sti, "\", "/")
  'Response.Write sti & " : <br>" & File.Name & "= " & File.Path & " (" & File.Size &" bytes)<BR>"
  Response.Write File.Name & " = <b>" & sti & "</b>&nbsp;&nbsp;&nbsp;(" & File.Size &" bytes)<BR>"
Next %>

<p>Other items:<BR>
<%
For Each Item in Upload.Form
  Response.Write Item.Name & "= " & Item.Value & "<BR>"
Next %>
</p>
Avatar billede superanden Nybegynder
26. marts 2009 - 13:33 #3
Hmm jeg har prøvet med samme metode som dig at ændre linje 12 og 13 således at jeg får:

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

Problemet er bare at den ikke skriver nogle filer ud, så det må jo tyde på at der er et problem med de tilhørende filer til det komponent. Kan bare ikke gennemskue hvad den fejl er.

I den side som kalder min logo_upload.asp har jeg ellers angivet:
<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="logo_uploadfile.asp">
Avatar billede superanden Nybegynder
26. marts 2009 - 13:34 #4
Det er jo ret mærkeligt at den ikke kan printe dem ud men den godt kan uploade filen.?
Avatar billede eagleeye Praktikant
28. marts 2009 - 09:25 #5
Hvis det er hele koden du har vist så mangler der en linje kode som gør filerne bliver uploaded.

Du skal kalde "Save" funktionen men en sti hvor filerne skal gemmens på din server.


Din kodoe:
    Set upl = Server.CreateObject("Persits.Upload")
    SET File = upl.Files("FILE1")
    Response.Write "Filnavnet: " & File.name


Skal rette lidt til:
    Set upl = Server.CreateObject("Persits.Upload")
    count = upl.Save(server.mapptath("."))
    SET File = upl.Files("FILE1")
    Response.Write "Filnavnet: " & File.name
Avatar billede superanden Nybegynder
28. marts 2009 - 10:59 #6
Jeg har upl.Save med i min kode den står bare længere ned.

Men kan godt se i alle sammen gør det samme som jeg gør, hvilket jeg også ville mene burde virke. Så må vist prøve at lave nogle tomme eksempler at teste på.
Avatar billede eagleeye Praktikant
28. marts 2009 - 11:22 #7
selve .Save funktion er jo den der fykder Files objektet så du skal hvade den linje ind før du kan udskrive fil navnet med File.Name
Avatar billede superanden Nybegynder
28. marts 2009 - 11:35 #8
Ahh. Se det var jo noget der var til at tage og føle på.!

Det kunne meget vel være mit problem. Jeg tester og melder tilbage om det virker. 1000 tak for din hjælp.
Avatar billede superanden Nybegynder
30. marts 2009 - 13:36 #9
Så fik jeg tid til at kode videre. Og ganske rigtig det virkede perfekt når jeg fik flyttet File objektet under save.

Jeg siger mange tak for hjælpen.
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

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