31. august 2005 - 12:18Der er
29 kommentarer og 1 løsning
Fejl i Persits Upload komponent
Hej Eksperter
Jeg sidder med et projekt hvor jeg skal uploade en billed-fil til serveren med Persits.Upload - men det virker ikke.
Jeg får følgende fejlmeddelelse:
Persits.Upload.1 error '800a0005'
The system cannot find the file specified.
/admin/save.asp, line 44
Linie 44 : Upload.Save Server.MapPath("./../images/eksempler") & "\"
Min formular:
<br><br>Oprettelse af: <b>Exempler</b> <form method="post" action="save.asp?action=CreateEksempel" ENCTYPE="multipart/form-data"> Navn: Navnet på eksemplet som ses af brugeren<br><input type="text" name="navn" style="width:300px;"><br><br> Link:<br><input type="text" name="link" style="width:300px;"><br><br> Beskrivelse: Beskriv eksemplet<br><textarea name="beskrivelse" style="width:500px;"></textarea><br><br> Upload et billede:<br> <input type="file" name="pic" style="width:300px;"><br><br> <input type="image" src="../images/send.jpg" id="knap"> </form>
Min case (der hvor billedet skal uploades og info gemmes i DB): Case "CreateEksempel" Set Upload = Server.CreateObject("Persits.Upload") Upload.OverWriteFiles = False Upload.Save Server.MapPath("./../images/eksempler") & "\"
navn = Upload.Form("navn") link = Upload.Form("link") beskrivelse = Upload.Form("beskrivelse") pic = Upload.Form("pic")
Set pic1 = Upload.Files("pic") if pic1 is nothing then pic1a = "" else pic1a = pic1.ExtractFileName end if
sql ="insert into Exempler (Navn,Billede,Link,Beskrivelse) values ("&"'"&navn&"','"&pic1a&"','"&link&"','"&beskrivelse&"')" conn.execute(sql) response.Redirect("eksempler.asp?oprettet=1")
Det sjove er, at hvis jeg ikke vælger at vedhæfte et billede så gemmes de øvrige info fint i databasen - uanset om jeg opretter eller opdaterer.
Skal lige nævnes at sitet er delt i 2 frames - men det skulle jo ikke betyde noget.
Ja, hvis du beder dem om at give skriverettigheder til IUSR, for det tror jeg ikke er standardindstillinger (da det gør sikkerheden svagere at IUSR kan skrive til webserveren)...
Det var også bare et forslag, det er jo ikke sikkert at det er problemet :)
Men hvis du ikke har andre ting du kan forfølge, så kan du da starte med at udelukke den mulighed du kender ;) - så kan det være der dukker nogle nye op hen ad vejen...
Har du snakket med din udbyder vedr. rettighederne til den folder (eller kan du selv se om der er skriverettigheder)? Det er stadig mit bedste bud på hvorfor det ikke fungerer...
En anden ting (og det er ikke fordi jeg ikke tror du ved det - men så er jeg sikker på at du ved det :)), hvis det er en linux, så er stinavne case sensitiv, kan det have noget med det at gøre?
En sidste ting: mens du venter på et bedre bud, vil jeg da anbefale at du sikrer dig 100%, at den sti du gemmer til rent faktisk er den du vil gemme til (bliver scriptet f.eks. kaldt fra en anden folder end du forventede da du skrev din relative sti?)...
Du kan jo eksperimentere lidt med at udskrive Server.MapPath(".") og at skrive stien til images/eksempler relativt fra roden i stedet for relativt fra den aktuelle folder...
Har du prøvet om din kode kan gemme uploads, hvis du ændrer stien til galleri i stedet for eksempler, altså bruger stien fra det eksempel der fungerer...?
Jeg synes ikke det giver meget mening hvorfor du får en fejl, med de informationer du giver os. Jeg kan ikke umiddelbart gennemskue hvad problemet er på det grundlag, så jeg tror bare lige jeg skifter mig selv ud...
Næh, uanset hvor det ligger så skal IUSR have rettigeder til at skrive til kataloget. Desuden indikerer stien i MapPath vel også ret kraftigt at det ligger indenfor websitet... eller nej?
kommer fejlmeddelelsen "The system cannot find the file specified. " istedet for "permission denied" kun når sitet ligger i "c:\Inetpub\wwwroot" og derunder
min webserver og de fleste andre webhoteller, bygger ikke deres server op, med C:\inetpub\wwwroot som webdirectory
Jeg har fået flg. til at fungere hos mig. Du skal huske at tømme din cache (og slette offline filer) når du eksperimenterer med dette her, for browseren cacher resultaterne og selvom du har rettet i stream-sourcen (f.eks. sat AddHeader ind i stedet for ContentType på Response), så er det ikke sikkert at du får det rigtige resultat tilbage. nå, men her er altså den kode hvormed jeg kunne hente et word-dokument:
<%@ language="vbscript" %> <% Const adTypeBinary = 1 filename = server.mappath("Invitationsliste.doc") Set objStream = Server.CreateObject("ADODB.Stream") objStream.Open objStream.Type = adTypeBinary objStream.LoadFromFile filename arrFilename = split(filename,".") Select Case arrFilename(ubound(arrFilename)) Case "asf" ContentType = "video/x-ms-asf" Case "avi" ContentType = "video/avi" Case "doc" ContentType = "application/msword" Case "zip" ContentType = "application/zip" Case "xls" ContentType = "application/vnd.ms-excel" Case "gif" ContentType = "image/gif" Case "jpg", "jpeg" ContentType = "image/jpeg" Case "wav" ContentType = "audio/wav" Case "mp3" ContentType = "audio/mpeg3" Case "mpg", "mpeg" ContentType = "video/mpeg" Case "rtf" ContentType = "application/rtf" Case "htm", "html" ContentType = "text/html" Case "asp" ContentType = "text/asp" Case Else 'Handle All Other Files ContentType = "application/octet-stream" End Select Response.AddHeader "Content-Type", ContentType & "; charset=windows-1252" Response.AddHeader "content-disposition", "attachment;filename=" & filename
Response.BinaryWrite objStream.Read %>
Som du kan se så har jeg hardcoded et worddokument ved navn invitationsliste.doc, men du kan nok gennemskue at dit recordset med filnavn skal ind der i stedet :)
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.