23. oktober 2005 - 16:32Der er
16 kommentarer og 1 løsning
aspsmartupload - upload af fil + kommentar
Hejsa, jeg har web hos cliche som bruger aspsmartupload. Da mine evner ikke magter at kode upload selv, spørger jeg pænt om nogle her kan strikke noget simpelt sammen til mig.
Jeg har brug for en side der skal uploade én fil, samt tilknytte en kommentar til filen (fra textarea).
Filen skal gemmes fysisk, og stien skal gemmes som tekst/link i en database så jeg kunne fiske det ud i en variabel. Kommentaren skal også lagres databasen sammen med stien til filen, så jeg kan fiske kommentaren ud i en variabel.
Dette skal jeg gøre, så jeg kan lave en side hvor brugere kan uploade ting og sager. Bagefter kan man på en anden side se et link til filen, og en beskrivelse af filens indhold.
Samtidig ved upload skal der i databasen lagres en dato for upload, sammen med filstørrelse og et "ID".
jeg ved virkelig ikke hvad denne mængde kodning indebærer, så point kan hæves hvis det er.
nu har jeg rodet med det fis, og det kan jeg sgu ikke få til at virke. For hver fejl jeg løser, opstår blot en ny.
Den giver ikke en, en database tabel man kan bruge. Jeg har lidt svært ved at se hvordan jeg skal designe den. Kolonnen der skal hede "FILE" hvilken type data skal jeg sætte den til at være i acces? Jeg kan samtidig ikke overskue hvad der ellers skal med af kolonner.
jo, men hvor gemmer den filen? Hvordan definerer jeg hvor den skal gemme filen, og kan man sætte den automatisk til at ændre filnavnet når den uploader?
Fx. hvis jeg er logget ind med bruger Bjørn, og skal uploade et billede under katagorien Bil (valgt fx. fra dropdownbox) - kan man så få filen navngivet som bjørnbil.jpg?
Jeg har endnu ikke fået aspsmartupload til at virke, så jeg har sendt en fil up på min server, som jeg har kunnet finde igen.
Du bestemmer jo selv hvor du vil lægge filen - dog kan nogle webhoteller have begrænsninger på en enkelt mappe eller lignende. filen kan du gemme med mySmartUpload.Save("/aspSmartUpload/Upload") helt som skrevet i flere af deres eksempler. Vil du gemme den med et selvvalgt navn kan du - helt som også skrevet i deres eksempler - bruge file.SaveAs("c:\temp\" & file.FileName)
det vil være en dårlig idé at gemme filstien i databasen - tænkt på den dag du vil ændre strukturen på dit webhotel og filstien dermed ændres. derfor gem kun filnavnet og programmér dig ellers frem til filstien i den kode der skal vise billedet.
Jeg får fejlmeddelelse hvis jeg forsøger mig begge dele. Hvis jeg poster hele min kode, når jeg får fri, kan du så ikke lige vise hvor det er jeg skal indsætte møget!?
' Connect to the DB ' ***************** Set oConn = Server.CreateObject("ADODB.Connection") curDir = Server.MapPath("sjovogspas.mdb") oConn.Open "DBQ="& curDir &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
' Open a recordset ' **************** strSQL = "SELECT dato,kommentar,filnavn,filstr,filsti FROM sjovogspas"
Set oRs = Server.CreateObject("ADODB.recordset") Set oRs.ActiveConnection = oConn oRs.Source = strSQL oRs.LockType = 3 oRs.Open
' Select each file ' **************** For each file In mySmartUpload.Files ' Only if the file exist ' ********************** If not file.IsMissing Then
' Add the current file in a DB field ' ********************************** oRs.AddNew oRs("filnavn") = file.FileName oRs("filstr") = file.Size oRs("kommentar") = "Dette er en simuleret kommentar" oRs("filsti") = file.FileName oRs("dato") = now oRs.Update intCount = intCount + 1 End If Next
' Display the number of files uploaded ' ************************************ Response.Write(intCount & " file(s) uploaded.<BR>")
' Destruction ' *********** oRs.Close oConn.Close Set oRs = Nothing Set oConn = Nothing %> </BODY> </HTML>
fjerner jeg linje 25, eksekveres filen korrekt, og databasen som ligger på serveren, bliver pænt fyldt ud med de nye data. Jeg har ikke kunnet lure hvordan jeg indsætter "filsti" i databasen, så den står p.t bare til filnavnet også. Men det kommer jo efter, at jeg har fundet ud af hvordan jeg reelt får uploadet filen til serveren. Den gemmer sig ingen steder.
det at den tilføjer noget til databasen, betyder vel også at "mySmartUpload.Files" indeholder en fil, men hvor er den?
ps. jeg har istedet for mySmartUpload.Save("/Upload") også forsøgt mig med variant af dit forslag file.SaveAs("c:\temp\" & file.FileName) - det giver samme fejlbesked.
Unable to save file (Error 1120) - skyldes formentlig at du enten forsøger at lægge filen et sted der ikke findes eller at du ikke har skriverettigheder i den mappe.
som sagt vil jeg mene det er en dårlig idé at lægge filsti i databasen i stedet for bare navnet på filen - men vil du endelig gøre det kan du gøre det sådan;
Ok, så giver det mening. Det må så angiveligt være min webhost (cliche) som så skal sætte skriverettigheder på den pågældende mappe? (jeg spørger dig, bare lige for at være sikker, så jeg ikke mailer dem og lyder dum).
og ja, det er nok en god idé at gøre som du skriver, med blot at gemme filnavnet, og når jeg så skal linke henter jeg filnavnet fra databasen, med stien foran.
iflg. CHMOD når jeg logger på via et ftp-program har "owner" skriverettigheder i alle mapper, mens "user" og "public" blot har read og execute rettigheder.
"owner" det er måske ikke mig?
Cliche har disablet, at jeg kan ændre på disse indstillinger via CHMOD, så nu afventer jeg svar fra cliche.
hej keyzersoze jeg fik svar fra cliche, om at jeg burde have skriverettigheder over det hele, så har rodet lidt videre, og har fundet løsningen. Jeg var bare lidt dum mht. stiangivelsen, så nu er alt i den skønneste orden. Hvis du smider svar, så får du point!
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.