Avatar billede starf Nybegynder
20. juni 2006 - 08:13 Der er 37 kommentarer og
2 løsninger

Upload Fil, og så omdøb den

Hej

Jeg skal bruge en upload funktion, der efter den har uploadet filen, omdøber den. Måden den omdøber filen på skal være noget af: <id>_filnavn.exe

hvor id kommer af en querystring jeg har, er dette muligt? og i så falde hvordan?
Avatar billede starf Nybegynder
20. juni 2006 - 08:14 #1
nå ja, efter den har omdøbt filen, skla den sætte detnye filnavn, ind i en database, felt.
Avatar billede mitbrugernavn Praktikant
20. juni 2006 - 08:15 #2
bruger du et komponent aspupload eller aspsmartupload ????
Avatar billede starf Nybegynder
20. juni 2006 - 08:27 #3
bruger ingen komponenter, men hvis komponentet er gratis og let at smide på sin egen server, betyder det intet for mig at bruge et komponent!
Avatar billede fennec Nybegynder
20. juni 2006 - 08:47 #4
Der findes flere:

AspSmartUpload: http://www.aspsmart.com/aspSmartUpload/
ABCUpload: http://www.websupergoo.com/abcupload-1.htm (gratis hvis du linker til dem)
Avatar billede mitbrugernavn Praktikant
20. juni 2006 - 08:48 #5
aspsmartupload  er gratis og kan hentes http://www.aspsmart.com/
Avatar billede starf Nybegynder
20. juni 2006 - 09:14 #6
løser jo stadig ik mit problem.
Avatar billede fennec Nybegynder
20. juni 2006 - 09:24 #7
Avatar billede starf Nybegynder
20. juni 2006 - 11:54 #8
Ok har nu instaleret aspsmartupload, men det virker ik rigtigt har ellers gjort som der står:
Stage 2 : Install aspSmartUpload.dll
1st Solution: Using RegSVR32
Copy aspSmartUpload.dll into a directory on the NT server (e.g. c:\mydir).
Save the component using the commands :
REGSVR32.EXE c:\mydir\aspSmartUpload.dll (From DOS or the Start/Run prompt)

Stage 3 : Install aspSmartUploadUtil.dll
The objective is to enable the Operating System to access the aspSmartUploadUtil.dll file.

There is two ways to archieve this :
- Copy aspSmartUploadUtil.dll in the c:\winnt\system32 directory. That way you don't have to update the PATH propertie.
- Copy aspSmartUploadUtil.dll into a directory on the NT server (e.g. c:\mydir).
Add the component directory in the PATH using the commands :
PATH=%PATH%;c:\mydir (From DOS)

og så genstartet.. Men når jeg så køre scripts, så får jeg altid denne her fejl:

aspSmartUpload : Sample 2

--------------------------------------------------------------------------------

aspSmartUpload error '800a0009'

Subscript out of range

/test.asp, line 21

hvilke ku tyde på der er noget galt med min install.. server os er windows 2003.
Avatar billede fennec Nybegynder
20. juni 2006 - 12:07 #9
Det er vist ikke instalationen der er problemet. Så burde du nemlig får en "can't create object" fejl.

Hvad står der er i linje 21 i test.asp???
Avatar billede starf Nybegynder
20. juni 2006 - 12:26 #10
mySmartUpload.Upload

er hva der står, ingen af de andre eksemlpler der er med virker.
Avatar billede fennec Nybegynder
20. juni 2006 - 12:49 #11
Og du har smidt aspSmartUploadUtil.dll ind i system32 mappen??
Avatar billede starf Nybegynder
20. juni 2006 - 13:06 #12
jep :)
Avatar billede fennec Nybegynder
20. juni 2006 - 13:22 #13
Virker denne kode:

<%
if Request.querystring("mode") = "save" then
  Set Upload = Server.CreateObject("aspSmartUpload.SmartUpload")
  Upload.Upload
  Upload.Save
  Response.write "Fil uploaded..."
  response.end
end if
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
  <title>Untitled</title>
</head>
<body>
<FORM METHOD="POST" ACTION="denneSide.asp?mode=save" ENCTYPE="multipart/form-data">
  <input type="File" Name="file1" ><br>
  <input type="Submit" value="Gem">
</FORM>
</body>
</html>
Avatar billede starf Nybegynder
20. juni 2006 - 13:44 #14
jep den virker fint!
Avatar billede fennec Nybegynder
20. juni 2006 - 14:03 #15
Så har vi da konstateret at upload komponenten virker :o)

Prøv så at ændre den til dette:
if Request.querystring("mode") = "save" then
  Set Upload = Server.CreateObject("aspSmartUpload.SmartUpload")
  Upload.Upload
  For each file In Upload.Files
    If not file.IsMissing Then
      file.SaveAs("/UploadMappe/" & file.FileName)
    end if
  next
  Response.write "Fil uploaded..."
  response.end
end if
Avatar billede starf Nybegynder
20. juni 2006 - 14:17 #16
den virker også fint!

så skla man vel bare på en eller anden måde lave en funktion der omdøber ens fil? og tager et id nummer fra en querystring, og så der efter lægger det ind i en db?
Avatar billede fennec Nybegynder
20. juni 2006 - 14:27 #17
Det skal du bare smide ind i denne linje:
file.SaveAs("/UploadMappe/" & file.FileName)

ID = 123
file.SaveAs("/UploadMappe/"& ID &"_"& file.FileName)

Så bliver filerne gemt som "123_filnavn.doc", eller hvad filen nu hedder :o)
Avatar billede fennec Nybegynder
20. juni 2006 - 14:29 #18
Og for at få det i DB:

ID = 123
filename = ID &"_"& file.FileName
file.SaveAs("/UploadMappe/"& filename)
conn.execute("insert into files(fil) values('"& filename &"')")
Avatar billede starf Nybegynder
20. juni 2006 - 14:42 #19
<% if mode = "addfile" then %>
<br><br>
Add fil<br>
<%response.write Request.QueryString("ordrenr")%>
<FORM METHOD="POST" ACTION="?mode=savefil&ordrenr=<%=Request.QueryString("ordrenr")%>" ENCTYPE="multipart/form-data">
  <input type="File" Name="file1" ><br>
  <input type="Submit" value="Gem"></FORM>
<% end if %>

<% if mode = "savefil" then %>

<%
if Request.querystring("mode") = "save" then
  Set Upload = Server.CreateObject("aspSmartUpload.SmartUpload")
  Upload.Upload
  For each file In Upload.Files
    If not file.IsMissing Then
      ID = Request.QueryString("ordrenr")
file.SaveAs("/"& ID &"_"& file.FileName)
    end if
  next
  Response.write "Fil uploaded..."
  response.end
end if
%>

har gjort sådan der, men når jeg så uploader en fil, sker der ik rigtigt noget kommer bare en blank side, og ingen fil bliver uploadet?
Avatar billede fennec Nybegynder
20. juni 2006 - 14:57 #20
Kommer du ind i if'en??

    If not file.IsMissing Then
      response.write "Hertil"
      response.end
      ID = Request.QueryString("ordrenr")
      file.SaveAs("/"& ID &"_"& file.FileName)
    end if
Avatar billede starf Nybegynder
20. juni 2006 - 15:03 #21
ordet hertil kommer ihvertfalde ik frem, efter at have smidt det stykke ind du lige har posted?
Avatar billede fennec Nybegynder
20. juni 2006 - 15:08 #22
Der er et dobbelt mode tjek (min rq("mode")="save" skal væk). Denne burde virker:

<% if mode = "addfile" then %>
<br><br>
Add fil<br>
<%response.write Request.QueryString("ordrenr")%>
<FORM METHOD="POST" ACTION="?mode=savefil&ordrenr=<%=Request.QueryString("ordrenr")%>" ENCTYPE="multipart/form-data">
  <input type="File" Name="file1" ><br>
  <input type="Submit" value="Gem"></FORM>
<% end if %>

<% if mode = "savefil" then
  Set Upload = Server.CreateObject("aspSmartUpload.SmartUpload")
  Upload.Upload
  For each file In Upload.Files
    If not file.IsMissing Then
      ID = Request.QueryString("ordrenr")
file.SaveAs("/"& ID &"_"& file.FileName)
    end if
  next
  Response.write "Fil uploaded..."
  response.end
end if
%>
Avatar billede mitbrugernavn Praktikant
20. juni 2006 - 15:13 #23
Når du oploader med ENCTYPE="multipart/form-data" skal det ikke være request foran dine forespørgsler men Upload

<% if mode = "addfile" then %>
<br><br>
Add fil<br>
<%response.write Request.QueryString("ordrenr")%>
<FORM METHOD="POST" ACTION="?mode=savefil&ordrenr=<%=Request.QueryString("ordrenr")%>" ENCTYPE="multipart/form-data">
  <input type="File" Name="file1" ><br>
  <input type="Submit" value="Gem"></FORM>
<% end if %>

<% if mode = "savefil" then %>

<%
  Set Upload = Server.CreateObject("aspSmartUpload.SmartUpload")
  Upload.Upload
if Upload.form("mode") = "save" then

  For each file In Upload.Files
    If not file.IsMissing Then
      ID = Upload.form("ordrenr")
file.SaveAs("/"& ID &"_"& file.FileName)
    end if
  next
  Response.write "Fil uploaded..."
  response.end
end if
%>
Avatar billede fennec Nybegynder
20. juni 2006 - 15:21 #24
mitbrugernavn >>
Man kan godt bruge Request.Querystring(). Det er kun .form() der ikke virker.
Avatar billede starf Nybegynder
20. juni 2006 - 15:40 #25
nu har jeg prøvet at gå den igennem et par gange, og der bliver stadig ik uploadet noget som helst. Den burde smide filen i den mappe scriptet bliver kørt fra ik?
Avatar billede fennec Nybegynder
20. juni 2006 - 16:03 #26
Nej. Den smider filerne i roden fordi SaveAs starter med "/". Skal det ind i samme mappe skal det være:
file.SaveAs(ID &"_"& file.FileName)

Men allerbedst at skrive stien ud fra roden, så er du sikker på hvor filerne bliver gemt:
file.SaveAs("/uploadMappe/"ID &"_"& file.FileName)
Avatar billede starf Nybegynder
20. juni 2006 - 16:09 #27
ok men den uploader stadig intet.. og der kommer heller ingen fejl.

den skriver heller ikke beskeden: Fil uploaded...

der kommer bare en hvid side.
Avatar billede mitbrugernavn Praktikant
20. juni 2006 - 16:15 #28
måske denne linie

if Upload.form("mode") = "save" then
rettes til

if Upload.form("mode") = "savefil" then
Avatar billede fennec Nybegynder
20. juni 2006 - 16:18 #29
Hvordan ser din kode ud nu??
Avatar billede mitbrugernavn Praktikant
20. juni 2006 - 20:23 #30
hva''''  faldt du ned af pinden eller hva ;-))))
Avatar billede starf Nybegynder
21. juni 2006 - 08:16 #31
<% if mode = "addfile" then %>
<br><br>
Add fil<br>
<%response.write Request.QueryString("ordrenr")%>
<FORM METHOD="POST" ACTION="?mode=savefil&ordrenr=<%=Request.QueryString("ordrenr")%>" ENCTYPE="multipart/form-data">
  <input type="File" Name="file1" ><br>
  <input type="Submit" value="Gem"></FORM>
<% end if %>

<% if mode = "savefil" then %>

<%
  Set Upload = Server.CreateObject("aspSmartUpload.SmartUpload")
  Upload.Upload
if Upload.form("mode") = "savefil" then

  For each file In Upload.Files
    If not file.IsMissing Then
      ID = Upload.form("ordrenr")
      file.SaveAs("/filer/" & ID &"_"& file.FileName)

    end if
  next
  Response.write "Fil uploaded..."
  response.end
end if

%>

Sådanher ser min kode ud nu. Det du skrev "mitbrugernavn" det hjalp ikke. Hvis jeg højre clicker og vælger vis kilde er den helt tom.
Avatar billede fennec Nybegynder
21. juni 2006 - 08:29 #32
Du skal IKKE bruge upload.form("mode"):

<% if mode = "addfile" then %>
<br><br>
Add fil<br>
<%response.write Request.QueryString("ordrenr")%>
<FORM METHOD="POST" ACTION="?mode=savefil&ordrenr=<%=Request.QueryString("ordrenr")%>" ENCTYPE="multipart/form-data">
  <input type="File" Name="file1" ><br>
  <input type="Submit" value="Gem"></FORM>
<% end if %>

<% if mode = "savefil" then %>

<%
  Set Upload = Server.CreateObject("aspSmartUpload.SmartUpload")
  Upload.Upload
  For each file In Upload.Files
    If not file.IsMissing Then
      ID = Upload.form("ordrenr")
      file.SaveAs("/filer/" & ID &"_"& file.FileName)

    end if
  next
  Response.write "Fil uploaded..."
  response.end
end if

%>
Avatar billede fennec Nybegynder
21. juni 2006 - 08:33 #33
Mode bliver sendt på url'en (GET) og derfor får du fat i den med request.querystring(), hvad du sikkert allerede gør længere oppe i din kode hvor du har dette:
mode = request.querystring("mode")

Alle GET parametre skal hentes med querystring, også selvom man bruger et upload komponent. Alle POST parametre skal hentes med upload.form().

Der er desudne endnu en fejl, da ordrenr også er en GET:

<% if mode = "addfile" then %>
<br><br>
Add fil<br>
<%response.write Request.QueryString("ordrenr")%>
<FORM METHOD="POST" ACTION="?mode=savefil&ordrenr=<%=Request.QueryString("ordrenr")%>" ENCTYPE="multipart/form-data">
  <input type="File" Name="file1" ><br>
  <input type="Submit" value="Gem"></FORM>
<% end if %>

<% if mode = "savefil" then %>

<%
  Set Upload = Server.CreateObject("aspSmartUpload.SmartUpload")
  Upload.Upload
  For each file In Upload.Files
    If not file.IsMissing Then
      ID = Request.querystring("ordrenr")
      file.SaveAs("/filer/" & ID &"_"& file.FileName)

    end if
  next
  Response.write "Fil uploaded..."
  response.end
end if

%>
Avatar billede starf Nybegynder
21. juni 2006 - 08:45 #34
Yes tak for forklaringen, så uploader den, så skal jeg bare lige ha det med databasen ti lat virke :)

beklager foresten jeg stoppede med at svare igår, sku på arbejde!
Avatar billede fennec Nybegynder
21. juni 2006 - 09:02 #35
I orden med mig. Jeg skulle hjem fra arbejde :o)

Det er bare at smide det i DB'en (min post 20/06-2006 14:29:43)

If not file.IsMissing Then
      ID = Request.querystring("ordrenr")
      filNavn = ID &"_"& file.FileName
      file.SaveAs("/filer/" & filNavn)
      conn.execute("insert into files(fil) values('"& filNavn &"')")
    end if
Avatar billede starf Nybegynder
21. juni 2006 - 09:23 #36
<%
  Set Upload = Server.CreateObject("aspSmartUpload.SmartUpload")
  Upload.Upload
  For each file In Upload.Files
    If not file.IsMissing Then
      ID = Request.querystring("ordrenr")
      filNavn = ID &"_"& file.FileName
      file.SaveAs("/filer/" & ID &"_"& file.FileName)
     
      SQL = "SELECT * FROM fil_ordre"
set rs6 = Conn.execute(SQL)
Dim rs6
Set rs6 = Server.CreateObject("ADODB.Recordset")
rs6.Open SQL, Conn, 3, 3
rs6.AddNew
rs6("fil") = filNavn
rs6("ordernr") = Request.QueryString("ordrenr")
rs6.Update
rs6.Close
Set rs6 = Nothing
Conn.Close
set Conn = Nothing

    end if
  next
  Response.write "Fil uploaded..."
  response.end
end if

%>

jeg gjorde nu sådan der, men det ser ud til at virke fint så mange tak for hjælpen!
Avatar billede starf Nybegynder
21. juni 2006 - 10:01 #37
nu har jeg lige et lille problem jeg håber du lige kan svare på selv om jeg har godkendt svaret:


<%
  Set Upload = Server.CreateObject("aspSmartUpload.SmartUpload")
  Upload.Upload
  For each file In Upload.Files
    If not file.IsMissing Then
      ID = Request.querystring("ordrenr")
      filNavn = ID &"_"& file.FileName

      file.SaveAs("/orderfiles/" & ID &"_"& file.FileName)
     
      SQL = "SELECT * FROM fil_ordre"
set rs6 = Conn.execute(SQL)
Dim rs6
Set rs6 = Server.CreateObject("ADODB.Recordset")
rs6.Open SQL, Conn, 3, 3
rs6.AddNew
rs6("txt") = Request.Form("filtxt")
rs6("fil") = filNavn
rs6("ordernr") = Request.QueryString("ordrenr")

rs6.Update
rs6.Close
Set rs6 = Nothing
Conn.Close
set Conn = Nothing

    end if
  next
  Response.write "Fil uploaded..."
  response.end

end if

%>

det giver mig følgende fejl:

Request object error 'ASP 0207 : 80004005'

Cannot use Request.Form

/system/ordre_list_admin.asp, line 1200

Cannot use Request.Form collection after calling BinaryRead.

hvorfor kan jeg ikke sætte mere text ind fra en form mere?
Avatar billede fennec Nybegynder
21. juni 2006 - 10:20 #38
GET parametre skal hentes med request.querystring()
POST parametre skal hentes med Upload.form() når du oploader, hvor Upload henviser til uploadkomponentens navn. Så hed den myUpload er det det navn der bruges

set myUpload = Server.CreateObject("aspSmartUpload.SmartUpload")
var = myUpload.form("formfelt")

Din kode skal derfor være:
rs6("txt") = Upload.Form("filtxt")

Vær desuden opmærksom på at man ofte først kan få fat i formfelterne efter upload kaldet. Men det kommer lidt an på hvilken komponent man bruger.

Dette virker ikke:
var = Upload.Form("formfelt")
Upload.upload

Dette virker:
Upload.upload
var = Upload.Form("formfelt")
Avatar billede starf Nybegynder
21. juni 2006 - 10:37 #39
mange tak, for forklaringen og løsningen :D
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