16. maj 2006 - 17:06Der er
12 kommentarer og 1 løsning
Har virkelig brug for dette
Jeg har en side med billeder, vil have at bruger kan uploade billede med tekst. ??? jeg har et uploade script til billede, men hvordan skal jeg tilføje tekst til???
<% dim strAction strAction = request("action")
select case strAction case "upload" UploadFile case else ShowForm end select
sub ShowForm %> <form enctype="multipart/form-data" action="upload.asp?action=upload" method=post> Fil: <input type="file" name="file"><br> <input type="submit" value="Upload"> </form> <% end sub
sub UploadFile dim intPosMIMEHeader, intPosFileDataStart dim intPosFileNameStart, intPosFileNameEnd dim intPosFileDataEnd, intDataSize dim binData, binFileData, binFileName, binStart dim strFileName dim objFSO, objFile
set objFSO = server.createobject("Scripting.FileSystemObject") set objFile = objFSO.CreatetextFile(server.mappath(".\image\players\" & strFileName), _ true, false) objFile.write bin2str(midB(binData, intPosFileDataStart, _ intPosFileDataEnd - intPosFileDataStart)) objFile.close set objFile = Nothing set objFSO = Nothing
response.write "Filen er uploadet" end sub
function bin2str(byref binS) ' omdanner en binær følge til en tekststreng dim i, strRes for i = 1 to lenB(binS) strRes = strRes & chr(ascB(midB(binS, i, 1))) next bin2str = strRes end function
function cstrB(strS) ' omdanner en tekststreng til en binær følge dim i, binRes for i = 1 to len(strS) binRes = binRes & chrB(asc(mid(strS,i,1))) next cstrB = binRes end function
det er faktisk ikke muligt når du har binary - det jeg har gjort er at redirecte til en form side, hvor man så kan tilføje noget tekst efter billedet faktisk er uploadet.
min tilføj tekst form indeholder: hidden - filsti (altså originalt filnavn) navn - det navn som brugeren skal se billedet hedder i f.eks. alt tekst - selvsagt
man kan godt begge dele i asp, det er bare ikke så nemt, man kan godt pille form data ud af den binære strøm, dog ikke med request.from. Det kræver dog en del manipuleren.
Jeg har fundet det her script - jeg kan dog ikke huske hvor: <% '*************************************** ' File: Upload.asp ' Author: Jacob "Beezle" Gilley ' Email: avis7@airmail.net ' Date: 12/07/2000 ' Comments: The code for the Upload, CByteString, ' CWideString subroutines was originally ' written by Philippe Collignon...or so ' he claims. Also, I am not responsible ' for any ill effects this script may ' cause and provide this script "AS IS". ' Enjoy! '****************************************
Class FileUploader Public Files Private mcolFormElem
Private Sub Class_Initialize() Set Files = Server.CreateObject("Scripting.Dictionary") Set mcolFormElem = Server.CreateObject("Scripting.Dictionary") End Sub
Private Sub Class_Terminate() If IsObject(Files) Then Files.RemoveAll() Set Files = Nothing End If If IsObject(mcolFormElem) Then mcolFormElem.RemoveAll() Set mcolFormElem = Nothing End If End Sub
Public Property Get Form(sIndex) Form = "" If mcolFormElem.Exists(LCase(sIndex)) Then Form = mcolFormElem.Item(LCase(sIndex)) End Property
Public Default Sub Upload() Dim biData, sInputName Dim nPosBegin, nPosEnd, nPos, vDataBounds, nDataBoundPos Dim nPosFile, nPosBound
If oUploadFile.FileSize > 0 Then Files.Add LCase(sInputName), oUploadFile Else nPos = InstrB(nPos, biData, CByteString(Chr(13))) nPosBegin = nPos + 4 nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2 If Not mcolFormElem.Exists(LCase(sInputName)) Then mcolFormElem.Add LCase(sInputName), CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin)) End If
nDataBoundPos = InstrB(nDataBoundPos + LenB(vDataBounds), biData, vDataBounds) Loop End Sub
'String to byte string conversion Private Function CByteString(sString) Dim nIndex For nIndex = 1 to Len(sString) CByteString = CByteString & ChrB(AscB(Mid(sString,nIndex,1))) Next End Function
'Byte string to string conversion Private Function CWideString(bsString) Dim nIndex CWideString ="" For nIndex = 1 to LenB(bsString) CWideString = CWideString & Chr(AscB(MidB(bsString,nIndex,1))) Next End Function End Class
Class UploadedFile Public ContentType Public FileName Public FileData
Public Property Get FileSize() FileSize = LenB(FileData) End Property
Public Sub SaveToDisk(sPath) Dim oFS, oFile Dim nIndex
If sPath = "" Or FileName = "" Then Exit Sub If Mid(sPath, Len(sPath)) <> "\" Then sPath = sPath & "\"
Set oFS = Server.CreateObject("Scripting.FileSystemObject") If Not oFS.FolderExists(sPath) Then Exit Sub
Set oFile = oFS.CreateTextFile(sPath & FileName, True)
For nIndex = 1 to LenB(FileData) oFile.Write Chr(AscB(MidB(FileData,nIndex,1))) Next
oFile.Close End Sub
Public Sub SaveToDatabase(ByRef oField) If LenB(FileData) = 0 Then Exit Sub
If IsObject(oField) Then oField.AppendChunk FileData End If End Sub
'NOTE - YOU MUST HAVE VBSCRIPT v5.0 INSTALLED ON YOUR WEB SERVER ' FOR THIS LIBRARY TO FUNCTION CORRECTLY. YOU CAN OBTAIN IT ' FREE FROM MICROSOFT WHEN YOU INSTALL INTERNET EXPLORER 5.0 ' OR LATER.
' Create the FileUploader Dim Uploader, File Set Uploader = New FileUploader
' This starts the upload process Uploader.Upload()
'****************************************** ' Use [FileUploader object].Form to access ' additional form variables submitted with ' the file upload(s). (used below) '****************************************** Response.Write "<b>Thank you for your upload " & Uploader.Form("fullname") & "</b><br>"
' Check if any files were uploaded If Uploader.Files.Count = 0 Then Response.Write "File(s) not uploaded." Else ' Loop through the uploaded files For Each File In Uploader.Files.Items
' Check where the user wants to save the file If Uploader.Form("saveto") = "disk" Then
' Save the file File.SaveToDisk "E:\UploadedFiles\"
ElseIf Uploader.Form("saveto") = "database" Then
' Open the table you are saving the file to Set RS = Server.CreateObject("ADODB.Recordset") RS.Open "MyUploadTable", "CONNECT STRING OR ADO.Connection", 2, 2 RS.AddNew ' create a new record
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.