Hej!
Nån som vet något bra fil-uploadskript?
Jag behöver ett script som:
* Laddar upp filen i en viss mapp
* Skriver in filens namn i en databas
MVH
/Robin
------------------
da great world of pisces - soon at http://robin.rocas.net !
10 svar · 440 visningar · startad av robincs
Hej!
Nån som vet något bra fil-uploadskript?
Jag behöver ett script som:
* Laddar upp filen i en viss mapp
* Skriver in filens namn i en databas
MVH
/Robin
------------------
da great world of pisces - soon at http://robin.rocas.net !
oj, oj, oj .... den som söker skall finna ;)
har tagits upp ett flertal ggr.
både med och utan 3:e parts componenter
cya,
PatrikB
------------------
'## -- second place is the first looser -- ##'
[Redigerat av PatrikB den 03 dec 2001]
Tja Robincs!
Jag hittade ett upload system i mina mappar som jag fått tidigare här från webforum.
Till detta upload script behöver man inga komponenter, dvs att scriptet fungerar på vilken server som helst (måste förståss stödja ASP).
<% @EnableSessionState = False %>
<% Option Explicit %>
<% Response.Expires = 0 %>
<%
Dim UPLOAD_PATH
UPLOAD_PATH = Server.MapPath("files")
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=""files/" & 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=""upload""></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
%>
Du måste skapa en mapp som du döper till Files i samma mapp som du lägger denna fil. Koden kan du ta och slänga in i en asp fil som du senare döper till upload.asp.
Hoppas du får det att fungera!
------------------
Mikael Tyrsén
</www.tyrsen.nu>
</mikael@tyrsen.nu>
Ursprungligen av Jacek
**Jag hittade ett upload system i mina mappar som jag fått tidigare här från webforum.
Till detta upload script behöver man inga komponenter, dvs att scriptet fungerar på vilken server som helst (måste förståss stödja ASP).--
Tack så mycket! Nu ska jag bara försöka få till det som jag vill ha :)**
Har du lyckats?
Njae
Sciptet fungerar bra, men jag försöker implementera det i mina övriga script och det går inte riktigt lika bra *sucka*
När man avnänder denna uploaded.. varför funkar det inte att använda request.form("") då?
För jag har en funktion där man ska kunna skriva in namn och sen välja bild och skicka upp.. allt skall vara i samma formulär.
Jag får bara felet
Det går inte att anropa BinaryRead efter att samlingen Request.Form har använts.
Å detta har också diskuterats massor av gånger, här bör du nog hitta alla svar på¨eventuella frågor: http://www.webforum.nu/showthread.php?s=&threadid=45212
Nae forumet stannade på samma fråga som jag har.. hehe
Kika på sidan två där: http://www.webforum.nu/showthread.php?s=&postid=380900#post380900
tror nog att denna del i ditt script är motsvarigheten:
fcontent = g_oUpload("upload").Item("content")
Nae det lösta sig här nu..