26. august 2003 - 10:16Der er
45 kommentarer og 1 løsning
upload af fil skal tilføjes til min form
Jeg har en temmelig lang form, hvor jeg gerne vil have tilføjet en upload. Jeg har tidligere spurgt efter et eksempel og fik da også et fint et, men jeg kan ikke få det til at du i min form...
koden i min form: <p class="TblTxtBld">Vedhæft fil</p> <p class="TblTxt">Evt. vedhæft en fil, der understøtter problemet</p> <p class="TblTxt">Fil: <input type="file" name="FILE1" size="40"></p>
I min asp-kode skal jeg så have tilføjet en kodestump der: - uploader til /upload/ skriver filnavnet | stien-til-upload | id (som endnu ikke er oprettet, men skal tildeles efter autonummerering) i en database Accesdatabasen "upload" ligger i roden
ok - here goes: Form: <table border="0" cellpadding="0" cellspacing="3" width="100%" bordercolor="<%=StrBorderColor%>" bgcolor=<%=StrBackgroundColorWhite%>> <form method=post name="form" action="default.asp?page=inc_opgave.asp&mode=insert&ansvarlig=<%=request.querystring("ansvarlig")%>&kategori=<%=request.form("kategori")%>&opgave=<%=request.querystring("opgave")%>" onSubmit="return validate(this);"> <tr> <td valign="top"> <p class="TblTxtBld">Kort problem beskrivelse (overskrift):</p> <p class="TblTxt">Her bedes du skrive en kort, men sigende overskrift til din opgave.</p> <p class="TblTxt"><input type=text name=Betegnelse wrap=physical onKeyDown="textCounter(this.form.Betegnelse,this.form.remLen,50);" onKeyUp="textCounter(this.form.Betegnelse,this.form.remLen,50);" size="50"></p> <p class="TblTxt"><i>(Min. 10 tegn og max. 50 tegn)</i><input readonly type=text name=remLen size=2 maxlength=3 value="50" style="border: 0px solid #000000; font-weight:bold; font-size:8pt; text-align:right"> tegn tilbage</p> <br> </td> </tr> <tr> <td valign="top"> <p class="TblTxtBld">Opgavebeskrivelse (forklaring):</p> <p class="TblTxt">Skriv venligt så detaljeret, som muligt, hvad der skal løses i din opgave.</p> <p class="TblTxt">Jo bedre du forklarer dit problem erller din opgave des mere effektiv bliver din hjælp.</p> <p class="TblTxt"><textarea name=Problem wrap=physical cols=50 rows=5 onKeyDown="textCounter2(this.form.Problem,this.form.remLen2,300);" onKeyUp="textCounter2(this.form.Problem,this.form.remLen2,300);"></textarea></p> <p class="TblTxt"><i>(Min. 10 tegn og max. 300 tegn)</i><input readonly type=text name=remLen2 size=3 maxlength=3 value="300" style="font-weight: bold; border: 0px solid #000000; font-size:8pt; text-align:right"> tegn tilbage</p> <br> <td> </tr> <tr> <td valign="top"> <table border="0" cellpadding="0" bordercolor="<%=StrBorderColor%>"> <tr> <td> <p class="TblTxtBld">Deadline:</p> <p class="TblTxt"><input type="text" name="Deadline" size="10" value="<% = date +14 %>"></p> <p class="TblTxt"><i> dd-mm-yyyy</i></p> <br> </td> <td> </td> <td valign="top"> <p class="TblTxtBld">Prioritet:</p> <p class="TblTxt"> <select size="1" name="Prioritet"> <option value="98">Skal prioriteres</option> <option value="5">Meget lav</option> <option value="4">Lav</option> <option value="3">Mellem</option> <option value="2">Høj</option> <option value="1">Meget høj</option> </select> </p> </td> </tr> </table> </td> </tr> <tr> <td valign="top">
<!-- her skal indsættes en upload --> <table border="0" cellpadding="0" bordercolor="<%=StrBorderColor%>"> <tr> <td valign="top"> <p class="TblTxtBld">Vedhæft fil</p> <p class="TblTxt">Evt. vedhæft en fil, der understøtter problemet</p> <p class="TblTxt">Fil: <input type="file" name="FILE1" size="40"></p> </td> </tr> </table> <!-- her skal indsættes en upload - slut -->
yeps Det den skal er at hente sidste kendte id fra en databsen opgave og lægge 1 til. Derefter skal den skrive til en Accesdatabse (upload): - Filnavnet <-- det valgte upload - Stien til filen - ID <-- Det hentede tal, så det passer til ID i opgaven Derefter skal den uploeade filen til /upload
Jeg har godt nok lige smidt if Request.QueryString("mode") = "insert" then op øverst, da jeg ellers vil få en fejl på min side, for jeg opdaterer 2 formfelter inden afsendelsesformularen
hey hey hye ... nu er der sgu fremskridt ... Jeg fik uploaded mit bilag - Juhuuuu
Dog får jeg efterfølgende fejl, da insert into upload.mdb ikke findes p.g.a. tidligere nævnte stifejl... Den referer til 'C:\Inetpub\wwwroot\upload.mdb', men stien skal være 'C:\Inetpub\wwwroot\support\upload.mdb'. -Dette gælder self. også for den uploadede fil. Kan man sætte det ved Server.MapPath ??
Yeps - det virkede -- nu har jeg fixfaxet med hele koden ... der var lige en del, der skulle laves om p.g.a. flytningen af hele insert-sætningerne Jeg mangler blot en enkelt detalje nu - sig til hvis du heller vil se et nyt spørgsmål, for du har da inderligt fortjent pointene, men oprindeligt i mit spørgsmål: I min asp-kode skal jeg så have tilføjet en kodestump der: - uploader til /upload/ skriver filnavnet | stien-til-upload | id (som endnu ikke er oprettet, men skal tildeles efter autonummerering) i en database Accesdatabasen "upload" ligger i roden i accesdatabsen står der nu: ID (autonummer) NAVN (er tom) STI (står der FILE1 på alle uploads) RefID (tom) <-- skulle være den ID, som bliver tildelt opgaven ved submit
egentlig kunne det være fedt at filnavn den blev til ref_filnavn. D.v.s. ID (autonummer) NAVN (er tom) <-- filnavn STI (står der "support/upload/FILE1" på alle uploads) <-- skal være support/upload/refid_filnavn <-- altså sammensætningen her RefID (tom) <-- skulle være den ID, som bliver tildelt opgaven ved submit
Set File = Upload.Files("FILE1") If Not File Is Nothing Then filStiNavn = relativSti & File.FileName navn = File.FileName Else filStiNavn = "" navn = "" End if
Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/upload.mdb")
jeps - det virkede én gang ... desværre, efterfølgende har jeg fået timeout-fejl på min StrCeateNew-sætning. Det har jeg ikke haft nogensinde før, men jeg kigger lige på det .. der er desværre lige sneget en vius ind, så jeg får nok ikke kigget mere på det før i eftermiddag... :/
ja, muligvis .. men jeg er mere interesseret i at finde ud af hvorfor den timeouter... den skal jo ikke tage 3oer 120 sekunder at submitte en formular med upload-fil på 7 Kb.
OK - jeg har fundet ud af hvad der timeouter, men ikke hvad jeg skal gøre ved problemet...
if Request.ServerVariables("REQUEST_METHOD")="POST" then Set Upload = Server.CreateObject("Persits.Upload.1") relativSti = "/websupport_v2/upload/"
Upload.Save Server.MapPath(relativSti)
' ### hent upload sti ### Set File = Upload.Files("FILE1") If Not File Is Nothing Then filStiNavn = relativSti & file.Name navn = File.FileName ' ### find kommende ID ### Set RS = DBCMD.Execute( "SELECT @@IDENTITY" ) idOfNewlyAddedRecord = RS(0) RS.Close Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/websupport_v2/upload.mdb")
som du kan se har jeg lavet en kontrol af om der er vedhæftet en fil. Hvis ikke skal den bare oprette opgaven, og det kører fint som det skal Men hvis FILE1 ikke er tom skal den udføre ovennævnte kode og så går den i timeout.
det er (næsten) helt sikkert fordi det tager 'lang' tid at upload filen til serven - der er jo tale om et upload-script så afviklingshastigheden afhænger af antallet af bytes der skal overføres, brugerens upstream-hastighed og serverens svartid, derfor ændres egenskaben
Arrrrgh - hvor er det bare P-irreterende.. Nu har jeg forsøgt at gå bagud for at se hvor der går noget galt .. (selv om min upload faktisk har virket) Jeg er helt tilbage til før upload-koden og alligevel får jeg timeoutfejl :( *grrr*
Synes godt om
Ny brugerNybegynder
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.