Jag provade fredriks bild upload script: http://cgi.webforum.nu/wf/Forum11/HTML/000626.html
det funkar jättebra men...
kan man på nått sätt koppla den uppladdade bilden med en post i databasen? samtidigt som man laddar upp helst :)
7 svar · 257 visningar · startad av aleborg
Jag provade fredriks bild upload script: http://cgi.webforum.nu/wf/Forum11/HTML/000626.html
det funkar jättebra men...
kan man på nått sätt koppla den uppladdade bilden med en post i databasen? samtidigt som man laddar upp helst :)
Kolla in http://mikrodatorn.idg.se/webbmastern/md9904. Där har du ett mycket bra svar.
Du får inte ha ha med punkten sådär i URL:en jag trodde ju att du glömt filändelsen. Väldigt irriterande då jag prövade hela mitt register av filändelser innan jag kom på att punkten inte skulle vara med alls.
Smarta jag. :e
[Redigerat av Janspeed den 13 feb 2001]
Den baserar sig på en upload komponent, så det blir lite svårt att lista ut för mig som är nybörjare hur man ska få in det i fredriks script!
Några mer förslag?
Tyvärr blir det mycket kod, men jag drar det "teoretiskt"
Jag utgår från att du har ett formulär med möjlighet att lägga in en bild/fil
Steg 1. Ta emot formuläret.
Steg 2. Spara formulärdata i en post (som "vanligt") i databasen.
Steg 3. Öppna databasen igen, sök efter det högsta id numret( eller den unika nyckeln)
Steg 4. Spara bilden, använd det unika id numret för att namnge bilden.
Steg 5. Spara bildens namn i databasen.
Nu har du en bild med ett unikt namn, och bildens namn sparat i databasen. nu kan du när som helst radera en post, kolla bildens namn, och radera bilden.
Mao. du behöver inte tänka på att namnge bilden med unika namn när du skickar upp den, det sköter systemet.
/T
------------------
"Den som väntar på någon som gått behöver inte vänta längre..."
hmmm...eeehhh...just det ja :)
Min befintliga kod som tar emot datan ser ut så här:
<%
dim Conn
set rs= Server.CreateObject("ADODB.Recordset")
SQL= "SELECT * FROM Nyheter WHERE 1=2"
rs.Open SQL,Conn,1,2
rs.AddNew
rs("Nyhet")=Request.Form("rubr")
rs("Datum")=Request.Form("date")
rs("Beskr")=Request.Form("beskr")
rs("Bild")=Request.Form("pic")
rs("Artnr")=Request.Form("artnr")
rs.Update
rs.Close
%>
Fredriks kod ser ut så här:
outputfile.asp:
<%
' Author Philippe Collignon
' Email PhCollignon@email.com
Response.Expires=0
Response.Buffer = TRUE
Response.Clear
'Response.BinaryWrite(Request.BinaryRead(Request.TotalBytes))
byteCount = Request.TotalBytes
'Response.BinaryWrite(Request.BinaryRead(varByteCount))
RequestBin = Request.BinaryRead(byteCount)
Dim UploadRequest
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest RequestBin
'email = UploadRequest.Item("email").Item("Value")
contentType = UploadRequest.Item("blob").Item("ContentType")
filepathname = UploadRequest.Item("blob").Item("FileName")
filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
value = UploadRequest.Item("blob").Item("Value")
'Create FileSytemObject Component
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
'Create and Write to a File
pathEnd = Len(Server.mappath(Request.ServerVariables("PATH_INFO")))-14
' Set MyFile = ScriptObject.CreateTextFile(Left(Server.mappath(Request.ServerVariables("PATH_INFO")),pathEnd)&filename)
Set MyFile = ScriptObject.CreateTextFile(Server.mappath("test/"&filename))
response.write(Server.mappath(filename))
For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next
MyFile.Close
%>
<b>Uploaded file : </b><%=filename%><BR>
<img src="test/<%=filename%>">
<!--#include file="upload.asp"-->
upload.asp:
<%
' Author Philippe Collignon
' Email PhCollignon@email.com
Sub BuildUploadRequest(RequestBin)
'Get the boundary
PosBeg = 1
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
boundaryPos = InstrB(1,RequestBin,boundary)
'Get all data inside the boundaries
Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))
'Members variable of objects are put in a dictionary object
Dim UploadControl
Set UploadControl = CreateObject("Scripting.Dictionary")
'Get an object name
Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition"))
Pos = InstrB(Pos,RequestBin,getByteString("name="))
PosBeg = Pos+6
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
PosFile = InstrB(BoundaryPos,RequestBin,getByteString("filename="))
PosBound = InstrB(PosEnd,RequestBin,boundary)
'Test if object is of file type
If PosFile<>0 AND (PosFile<PosBound) Then
'Get Filename, content-type and content of file
PosBeg = PosFile + 10
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
'Add filename to dictionary object
UploadControl.Add "FileName", FileName
Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
PosBeg = Pos+14
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
'Add content-type to dictionary object
ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
UploadControl.Add "ContentType",ContentType
'Get content of object
PosBeg = PosEnd+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
Else
'Get content of object
Pos = InstrB(Pos,RequestBin,getByteString(chr(13)))
PosBeg = Pos+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
End If
'Add content to dictionary object
UploadControl.Add "Value" , Value
'Add dictionary object to main dictionary
UploadRequest.Add name, UploadControl
'Loop to next object
BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)
Loop
End Sub
'String to byte string conversion
Function getByteString(StringStr)
For i = 1 to Len(StringStr)
char = Mid(StringStr,i,1)
getByteString = getByteString & chrB(AscB(char))
Next
End Function
'Byte string to string conversion
Function getString(StringBin)
getString =""
For intCount = 1 to LenB(StringBin)
getString = getString & chr(AscB(MidB(StringBin,intCount,1)))
Next
End Function
%>
hur 17 gör man?
Hängde med på Toonsters resonemang, men att sätta det i script är lite annorlunda!
Går det med Mikrodatorns script på något sätt att få reda på storleken dvs. bredd och höjd på bilden... inte bara filstorleken?
------------------
Ingenting är omöjligt, bara en utmaning.
Om det verkar krångligt, så ta det i små steg.
Försök först få bilden uppladdad, och spara bildens namn (direkt från textfältet) i databasen.
När du sedan får det att funka, kan du börja med att "laborera med bildnamnet"
Som du märker blir det en massa kod, men jag ska försöka "klistra in" något under kvällen...
/T
------------------
"Den som väntar på någon som gått behöver inte vänta längre..."