Avatar billede weis Nybegynder
22. november 2005 - 20:58 Der er 10 kommentarer og
1 løsning

Upload og rename

Jeg skal til at lave en uploadfunktion til dokumenter (skal helst begrænses til .doc .rtf .pdf) men den skal så samtidig renames til noget bestem + dato. dvs jeg vil have den til at hedde "tekstfil-" en dato som man vælger på hjemmesiden (skulle så ende som fx "tekstfil-21-11-05")

Filen skal så ende i en bestemt mappe og så skal der ligges info ind i en access database - der skal bla være et link til filen noget tekst, som man tilføjer der hvor man uploader.

Kender i nogle godt tutorials til diss funktioner??? Gerne så simpelt som muligt!
Avatar billede eagleeye Praktikant
22. november 2005 - 21:57 #1
Der er to alternativer ved upload, upload med eller uden komponent. Upload med en komponenet kræver at den server man køre scriptet på understyttter den komponent man vælger men til gengæld er koden lettere at gennemskue end hvis man vælger et upload script uden komponent. De mest kendte komponenter er ASPSmartUpload (gratis) og ASPUpload.

Link til ASPSmartUpload:  http://www.aspsmart.com/aspSmartUpload/

Alternativt benyttes et upload script uden komponent og det kan være nødvendigt at bruge hvis man eksempelvis køre på en Chili!ASP server. Et eksempel på et script uden komponent kan downloades herfra:
http://www.cwboy.dk/downloads/


Generelt kan du også prøve at søge på eksperten der er mange som har efter spurgt upload scrips og som både renamer og gemmer i databaser. Eksempel med ASPSmartUpload som renamer fileno og gemmer navnet i en access database:
http://www.eksperten.dk/spm/361506
Avatar billede weis Nybegynder
23. november 2005 - 17:19 #2
Jeg har aspSmartUpload på serveren, og jeg har hurtigt kigget i det script du henviste til og skrevet lidt om i det, men jeg får bare denne besked når jeg vil uploade:

Wrong selection : Type mismatch
Filen er nu uploaded og gemt

Scriptet ser sådan her ud nu:

<html>
<head></head>
<body>
<%
if Request.ServerVariables("REQUEST_METHOD") = "POST" then

  On Error Resume Next
  '  Object creation
  Set upload = Server.CreateObject("aspSmartUpload.SmartUpload")
  'Max størrelse i bytes
  upload.MaxFileSize = 1000000
 
  'Upload filerne til memory
  upload.Upload

  For each file In upload.Files
    If not file.IsMissing Then
      filnavn = "/upload/images/" & Request.Form("dato") &"-tekst" & "." & file.FileExt
      file.SaveAs filnavn
    end if
  next

  '  Trap errors
  If Err Then
    Response.Write("<b>Wrong selection : </b>" & Err.description)
  End If

  'Gem filnanvet i databasen
  if filnavn <> "" then
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& server.mappath("db.mdb")

    SQL = "INSERT INTO tablenavn (dato, filnavn) VALUES (" & Request.Form("dato") & ", '" & filnavn & "')"
    Conn.Execute(SQL)
    Conn.Close
    Set Conn = Nothing
  end if
   
%>
<center> Filen er nu uploaded og gemt </center>
<%
else
%>

<form method="post" action="default.asp" ENCTYPE="multipart/form-data">
  <p>
    <input type="file" name="fil1">
    <input type="submit" name="Upload" value="Upload">
    <br>
    <input type="text" name="dato" id="dato">
  </p>
</form>

</body>
</html>
<% end if %>
Avatar billede eagleeye Praktikant
23. november 2005 - 17:26 #3
Når man henter et form felt skal man bruge upload komponenten for collection upload.form så prøv at rette senne linje:

      filnavn = "/upload/images/" & Request.Form("dato") &"-tekst" & "." & file.FileExt

Til dette:

      filnavn = "/upload/images/" & upload.Form("dato") &"-tekst" & "." & file.FileExt


Hvordan skriver du datoen? Den må ikke indeholde / eller \ så bliver stien ugyldig.

SQL sætningen skal også rettes til med upload.form:
    SQL = "INSERT INTO tablenavn (dato, filnavn) VALUES (" & upload.Form("dato") & ", '" & filnavn & "')"

Hvilkne type er kolonnen dato i din database? Der skal enten # eller ' omkring i SQL sætningen..
    SQL = "INSERT INTO tablenavn (dato, filnavn) VALUES ('" & upload.Form("dato") & "', '" & filnavn & "')"
Avatar billede weis Nybegynder
23. november 2005 - 17:35 #4
Min dato skrives som: 23-11-2005
Kolonnen i databasen er alm: tekst

Men den kommer stadig med samme fejl...! Et andet spørgsmål hvorfor er navnet på filboxen: fil1??? kan komponentet selv finde ud af at det er filen den skal hente der i?
Avatar billede eagleeye Praktikant
23. november 2005 - 17:40 #5
>> Kolonnen i databasen er alm: tekst
Så skal SQL sætningen se ud som den sidste jeg viste hvor der er ' omkring.

>> Et andet spørgsmål hvorfor er navnet på filboxen: fil1???
Ja når inputet er af type file så finder komponenten selv ud af at finde filen.

Prøv at fjerne eller ukommenter denne linje:
  On Error Resume Next

Så skulle der gerne komme en bedre fejl kode+beskrivelse.
Avatar billede weis Nybegynder
23. november 2005 - 17:47 #6
Det gør jeg desværre ikke...! Jeg får bare en "Siden kan ikke vises"

... Der opstod en intern HTTP 500-serverfejl
Avatar billede eagleeye Praktikant
23. november 2005 - 17:52 #7
Ok så prøv i IE at vælge menuen funktioner
klik på internetindstillinger
kilk på avanceret
find og fjern kryds i "vis meddelelse om uskadelige http-fejl" checkboxen
gem


Så skulle browseren gerne skive fejlen.
Avatar billede weis Nybegynder
23. november 2005 - 17:56 #8
der var den :-)

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'SaveAs'

/upload/default.asp, line 19
Avatar billede eagleeye Praktikant
23. november 2005 - 18:03 #9
Det kan være der skal Server.Mapptah omkring prøv sådan at rette saveas linjen til:

      file.SaveAs Server.Mappath(filnavn)

Hvis det stadig fejler så kunne det tyde på at der er noget med filnanvet som driller. Prøv så at udskrive filnavnet sådan her:

      filnavn = "/upload/images/" & upload.Form("dato") &"-tekst" & "." & file.FileExt
  response.write filnavn
  response.end
      file.SaveAs filnavn

Og tjek at der ikke indgår ulovlige karakter i navnet.
Avatar billede weis Nybegynder
23. november 2005 - 18:07 #10
Det hjalp... 1000-tak... jeg vil gerne give flere point for den så hurtige hjælp - husk at ligge et svar ;)
Avatar billede eagleeye Praktikant
23. november 2005 - 18:31 #11
ok her er et svar ;)
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