Du kan ju titta på mitt första inlägg där jag gjorde lite ändringar i funktionen.
Annars så kan du ju lägga in lite test-utskrifter så att du kan se värdet på inparametrar och de lokala variablerna.
28 svar · 1 326 visningar · startad av mikul · sida 2 av 2
hej. jag får detta felmedelandet: Körningsfel i Microsoft VBScript fel '800a0005' Ogiltigt proceduranrop eller argument.: 'Mid' /asp/UploadScript2.asp, rad 15 när jag kör följande kod: '##### Mickes stuff ##### Function namn(str) Dim pos, fromend str = Trim(str) pos = inStrRev(str,"/") fromend = len(str) - pos namn = Mid(str,fromend) End Function Sub add(Fil) Dim Conn
Läs hela trådstarten →Du kan ju titta på mitt första inlägg där jag gjorde lite ändringar i funktionen.
Annars så kan du ju lägga in lite test-utskrifter så att du kan se värdet på inparametrar och de lokala variablerna.
Jag har ingen erfarenhet av den upload du använder.
Exemplet med for each hittade jag här
http://www.verio.com/support/view_article.cfm?doc_id=561
så du kanske kan titta mer där.
jag ska kolla där...
men tack så otroligt mycket för hjälpen!
den är värkligen uppskattad...
/ Mikul
så här blev det färdiga resultatet:
<%
Set Upload = Server.CreateObject("Persits.Upload.1")
Count = Upload.Save("C:\Inetpub\wwwroot\asp\kas\reportage\images")
Function namn(str)
if isnull(str) or len(str) = 0 then
name = ""
return
end if
Dim pos
str = Trim(str)
pos = inStrRev(str,"\")
namn = Right(str,Len(str)-pos)
End Function
Sub add(Fil)
Dim Conn
Set Conn = Server.Createobject("Adodb.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& Server.MapPath("kas/reportage/db.mdb")
sql = "Insert into bilder(bild,rubrik) Values('" & Fil & "','rubrik')"
Conn.Execute (sql)
Conn.Close
Set Conn = Nothing
End Sub
For Each File in Upload.Files
add(namn(File.Path))
Next
Response.write Count & " files uploaded."
If Upload.Expires <> CDate("9/9/9999") Then Response.Write "<HR>AspUpload expires on " & Upload.Expires
%>
jag hade först och främst satt ett / i stället för \ i funktionen...
sen fick jag hjälp med att hitta den rätta For-Each satsen...
men ett sort tack ska du ha Lars, och även Jörgen.
/ Mikul
Jag behöver en Upploder för bilder.... fungera denna eller är det inte hela kodeN?
tyvärr är inte det hela koden...
du behöver dock en komponent installerad på servern för att kunna använda denna kod...
om du inte vill installera en komponent så finns det andra script för detta.
exempelvis detta som laddar upp filerna ifråga till mappen "filer" som du lägger i samma mapp som asp dokumentet ligger i...
<% @EnableSessionState = False %>
<% Option Explicit %>
<% Response.Buffer = True %>
<% Response.Expires = 0 %>
<%
Dim UPLOAD_PATH
UPLOAD_PATH = Server.MapPath("filer")
Dim g_oFso, g_oFolder, g_oFile
Set g_oFso = Server.CreateObject("Scripting.FileSystemObject")
Set g_oFolder = g_oFso.getFolder(UPLOAD_PATH)
If (Request.ServerVariables("REQUEST_METHOD") = "POST") Then
Dim g_oUpload
Set g_oUpload = get_upload_files()
Dim fpos, fcontent
fcontent = g_oUpload("upload").Item("content")
Set g_oFile = g_oFso.CreateTextFile(UPLOAD_PATH & "\" & extract_filename(g_oUpload("upload").Item("filename")))
For fpos = 1 to LenB(fcontent)
g_oFile.Write chr(AscB(MidB(fcontent, fpos, 1)))
Next
g_oFile.Close: Set g_oFile = Nothing
Response.Redirect Request.ServerVariables("SCRIPT_NAME")
End If
Response.Write "<html><body><table>"
Response.Write "<tr><td><hr></td></tr>"
For Each g_oFile In g_oFolder.Files
Response.Write "<tr><td><a href=""filer/" & g_oFile.Name & """>" & g_oFile.name & "</a></td></tr>"
Next
Response.Write "<tr><td><hr></td></tr>"
Response.Write "<tr><td align=""right""><form name=""frmUpload"" method=""post"" enctype=""multipart/form-data"" action=""" & Request.ServerVariables("SCRIPT_NAME") & """>"
Response.Write "<input type=""file"" name=""upload""> <input type=""submit"" value=""Ladda upp""></td></tr>"
Response.Write "</table></body></html>"
%>
<%
Function get_upload_files()
Dim upload_object, request_binaries
Dim position_start, position_end
Dim boundary, boundary_pos
Set upload_object = Server.CreateObject("Scripting.Dictionary")
request_binaries = Request.BinaryRead(Request.TotalBytes)
position_start = 1
position_end = InstrB(position_start, request_binaries, get_byte_string(chr(13)))
boundary = MidB(request_binaries, position_start, (position_end - position_start))
boundary_pos = InstrB(1, request_binaries, boundary)
Do Until (boundary_pos = InstrB(request_binaries, boundary & get_byte_string("--")))
If Not(Response.IsClientConnected) Then Response.End
Dim name, pos_file
position_start = (InstrB(InstrB(boundary_pos, request_binaries, get_byte_string("Content-Disposition")), request_binaries, get_byte_string("name=")) + 6)
position_end = InstrB(position_start, request_binaries, get_byte_string(chr(34)))
name = get_string(MidB(request_binaries, position_start, (position_end - position_start)))
pos_file = InstrB(boundary_pos, request_binaries, get_byte_string("filename="))
If ((pos_file <> 0) AND (pos_file < InstrB(position_end, request_binaries, boundary))) Then
upload_object.Add name, Server.CreateObject("Scripting.Dictionary")
position_start = (pos_file + 10)
position_end = InstrB(position_start, request_binaries, get_byte_string(chr(34)))
upload_object.item(name).Add "filename", get_string(MidB(request_binaries, position_start, (position_end - position_start)))
position_start = (InstrB(position_end, request_binaries, get_byte_string("Content-Type:")) + 14)
position_end = InstrB(position_start, request_binaries, get_byte_string(chr(13)))
upload_object.item(name).Add "content-type", get_string(MidB(request_binaries, position_start, (position_end - position_start)))
position_start = (position_end + 4)
position_end = InstrB(position_start, request_binaries, boundary) - 2
upload_object.item(name).Add "size", ((position_end - position_start))
upload_object.item(name).Add "content", MidB(request_binaries, position_start, (position_end - position_start))
End If
boundary_pos = InstrB(boundary_pos + LenB(boundary), request_binaries, boundary)
Loop
Set get_upload_files = upload_object
End Function
Function get_byte_string(str)
Dim cnt
For cnt = 1 to Len(str)
get_byte_string = get_byte_string & chrB(AscB(Mid(str, cnt, 1)))
Next
End Function
Function get_string(str)
Dim cnt
For cnt = 1 to LenB(str)
get_string = get_string & chr(AscB(MidB(str, cnt, 1)))
Next
End Function
Function extract_filename(filename)
extract_filename = Right(filename, Len(filename) - InStrRev(filename, "\", -1, 1))
End Function
%>
fast jag skulle starkt råda dig till att installera en komponent...
kontakta mig på min mail så kan jag skicka den åt dig + hela koden som jag använder mig av för att ladda upp filer och registrera dem i en databas...
/ Mikul
tyvärr är inte det hela koden...
du behöver dock en komponent installerad på servern för att kunna använda denna kod...
om du inte vill installera en komponent så finns det andra script för detta.
exempelvis detta som laddar upp filerna ifråga till mappen "filer" som du lägger i samma mapp som asp dokumentet ligger i...
<% @EnableSessionState = False %>
<% Option Explicit %>
<% Response.Buffer = True %>
<% Response.Expires = 0 %>
<%
Dim UPLOAD_PATH
UPLOAD_PATH = Server.MapPath("filer")
Dim g_oFso, g_oFolder, g_oFile
Set g_oFso = Server.CreateObject("Scripting.FileSystemObject")
Set g_oFolder = g_oFso.getFolder(UPLOAD_PATH)
If (Request.ServerVariables("REQUEST_METHOD") = "POST") Then
Dim g_oUpload
Set g_oUpload = get_upload_files()
Dim fpos, fcontent
fcontent = g_oUpload("upload").Item("content")
Set g_oFile = g_oFso.CreateTextFile(UPLOAD_PATH & "\" & extract_filename(g_oUpload("upload").Item("filename")))
For fpos = 1 to LenB(fcontent)
g_oFile.Write chr(AscB(MidB(fcontent, fpos, 1)))
Next
g_oFile.Close: Set g_oFile = Nothing
Response.Redirect Request.ServerVariables("SCRIPT_NAME")
End If
Response.Write "<html><body><table>"
Response.Write "<tr><td><hr></td></tr>"
For Each g_oFile In g_oFolder.Files
Response.Write "<tr><td><a href=""filer/" & g_oFile.Name & """>" & g_oFile.name & "</a></td></tr>"
Next
Response.Write "<tr><td><hr></td></tr>"
Response.Write "<tr><td align=""right""><form name=""frmUpload"" method=""post"" enctype=""multipart/form-data"" action=""" & Request.ServerVariables("SCRIPT_NAME") & """>"
Response.Write "<input type=""file"" name=""upload""> <input type=""submit"" value=""Ladda upp""></td></tr>"
Response.Write "</table></body></html>"
%>
<%
Function get_upload_files()
Dim upload_object, request_binaries
Dim position_start, position_end
Dim boundary, boundary_pos
Set upload_object = Server.CreateObject("Scripting.Dictionary")
request_binaries = Request.BinaryRead(Request.TotalBytes)
position_start = 1
position_end = InstrB(position_start, request_binaries, get_byte_string(chr(13)))
boundary = MidB(request_binaries, position_start, (position_end - position_start))
boundary_pos = InstrB(1, request_binaries, boundary)
Do Until (boundary_pos = InstrB(request_binaries, boundary & get_byte_string("--")))
If Not(Response.IsClientConnected) Then Response.End
Dim name, pos_file
position_start = (InstrB(InstrB(boundary_pos, request_binaries, get_byte_string("Content-Disposition")), request_binaries, get_byte_string("name=")) + 6)
position_end = InstrB(position_start, request_binaries, get_byte_string(chr(34)))
name = get_string(MidB(request_binaries, position_start, (position_end - position_start)))
pos_file = InstrB(boundary_pos, request_binaries, get_byte_string("filename="))
If ((pos_file <> 0) AND (pos_file < InstrB(position_end, request_binaries, boundary))) Then
upload_object.Add name, Server.CreateObject("Scripting.Dictionary")
position_start = (pos_file + 10)
position_end = InstrB(position_start, request_binaries, get_byte_string(chr(34)))
upload_object.item(name).Add "filename", get_string(MidB(request_binaries, position_start, (position_end - position_start)))
position_start = (InstrB(position_end, request_binaries, get_byte_string("Content-Type:")) + 14)
position_end = InstrB(position_start, request_binaries, get_byte_string(chr(13)))
upload_object.item(name).Add "content-type", get_string(MidB(request_binaries, position_start, (position_end - position_start)))
position_start = (position_end + 4)
position_end = InstrB(position_start, request_binaries, boundary) - 2
upload_object.item(name).Add "size", ((position_end - position_start))
upload_object.item(name).Add "content", MidB(request_binaries, position_start, (position_end - position_start))
End If
boundary_pos = InstrB(boundary_pos + LenB(boundary), request_binaries, boundary)
Loop
Set get_upload_files = upload_object
End Function
Function get_byte_string(str)
Dim cnt
For cnt = 1 to Len(str)
get_byte_string = get_byte_string & chrB(AscB(Mid(str, cnt, 1)))
Next
End Function
Function get_string(str)
Dim cnt
For cnt = 1 to LenB(str)
get_string = get_string & chr(AscB(MidB(str, cnt, 1)))
Next
End Function
Function extract_filename(filename)
extract_filename = Right(filename, Len(filename) - InStrRev(filename, "\", -1, 1))
End Function
%>
fast jag skulle starkt råda dig till att installera en komponent...
kontakta mig på min mail så kan jag skicka den åt dig + hela koden som jag använder mig av för att ladda upp filer och registrera dem i en databas...
/ Mikul
varför kom det två gånger?
konstigt...
/ Mikul