webForumDet fria alternativet

Ladda upp kort o byta namn ?!

ASP

12 svar · 187 visningar · startad av ConnyFox

Medlem sedan aug. 20011 087 inlägg
Frågan#1

Jag behöver ett script som låter användare ladda upp en bild på sig själv och sedan byter namn på bilden till användarens användarnamn.. eller iaf unikt namn för varje medlem. Någon som vet ett bra script? Använder clsupload men den laddar upp bilden med befintligt namn.. någon som vet en lösning på detta?

------------------
*brölar ljudligt*

Medlem sedan okt. 2001387 inlägg
#2

Jag använder scripten som jag postade här och som gör det du är ute efter:
http://cgi.webforum.nu/wf/Forum11/HTML/008005.html

Medlem sedan aug. 20011 087 inlägg
#3

Jätte bra men jag lyckas inte få det att funka.. har hittat ett annat script som funkar bra.. ända felet är att den inte byter namn på filen.. någon som vet hur man fixar detta? filnamnet ska vara <%=Session("userID")%>

laddaupp.asp

<% session("userID") = maggan %>
<FORM METHOD="Post" ENCTYPE="multipart/form-data" ACTION="outputFile.asp">
Fil : <INPUT TYPE="file" NAME="blob"><BR>
<INPUT TYPE="submit" NAME="ok">
</FORM>

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
%>

[Redigerat av ConnyFox den 03 jan 2002]

Medlem sedan aug. 20011 087 inlägg
#4

har testat ett antal olika script jag hittat här nu :o) Men inget funkar som jag vill.. detta ovan är jättebra bara jag kan få det o byta namn på filen oxå.. eller om någon har nått annat script så tar jag mer än gärna emot!

[Redigerat av ConnyFox den 03 jan 2002]

Medlem sedan aug. 20011 087 inlägg
#5

Ingen som kan hjälpa mig med detta? *lite desperat*

------------------
*brölar ljudligt*

Medlem sedan dec. 2000399 inlägg
#6

Orkade inte kolla all kod men prova detta:

outputfile.asp

filename = Session("userID")

------------------
mvh André

[Redigerat av juventus1 den 03 jan 2002]

[Redigerat av juventus1 den 03 jan 2002]

Medlem sedan aug. 20011 087 inlägg
#7

Redan testat detta.. Måste nog till att ändra lite mer =/

Om jag byter ut

filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))

mot

filename = Session("userID")

får jag detta felet..

Körningsfel i Microsoft VBScript fel '800a0046' 

Åtkomst nekad. 

/aspupload/2/outputFile.asp, rad 30

------------------
*brölar ljudligt*

Medlem sedan dec. 2000399 inlägg
#8

Vad händer om du skriver ut filename(med orginalkoden)?

response.write filename

------------------
mvh André

Medlem sedan aug. 20011 087 inlägg
#9

jag får fram : access-icon_part1.gif

hehe tack du hjälper mig hela tiden jue ;)

------------------
*brölar ljudligt*

Medlem sedan dec. 2000399 inlägg
#10

Ett nytt försök:

filename = Session("userID") & right(filepathname,4)

------------------
mvh André

Medlem sedan aug. 20011 087 inlägg
#11

Ah tack nu funkade det tror jag :o) Tack ännu en gång :o)

------------------
*brölar ljudligt*

Medlem sedan juni 20015 009 inlägg
#12

Det är konstigt, den koden Nill gav funkar perfekt hos mig. Utan att behöva ändra något. Fast bildnamnet blir ju varje användares id nr.

------------------
... *hick*

Medlem sedan aug. 20011 087 inlägg
#13

Tänkte jag skulle posta hela min kod här så att andra kan ha nytta av den förhoppningsvis!
har gjort lite småändringar för att den ska passa just mig, som att bilden inte får vara över en viss storlek (15kb) och att det måste vara en .jpg bild men det kan man ju lätt ändra sedan!

Visa bilden

<img src="bilder/foton/<%=recset("ID")%>.jpg" width="80" height="77">

ladda upp bilden

<FORM METHOD="Post" ENCTYPE="multipart/form-data" ACTION="outputFile.asp">
Ladda upp foto : <INPUT TYPE="file" NAME="blob" class="input"><BR>
<INPUT TYPE="submit" NAME="ok" value="Ladda upp">

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 = Session("membID")&right(filepathname,4)
value = UploadRequest.Item("blob").Item("Value")

'Create FileSytemObject Component
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")

If not right(filepathname,4) = ".jpg" OR bytecount > 15000 Then
response.write bytecount
response.write "fileextension"
response.write "Filen är för stor eller inte .jpg"
else
'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("bilder/foton/"&filename))
For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next

MyFile.Close
response.redirect "memb_info.asp?member="& session("member")&""
end if
%>
<!--#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
%>

Hoppas att någon får nytta av det!

------------------
*brölar ljudligt*

268 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)