Varfor inte testa Overrides uploadskript istallet? Funkar skitbra och ar komponentlos! Jag har skrivit i den traden for bla fora in access db....
sen med att skapa mapp ar val FSO som galler :)
9 svar · 374 visningar · startad av Alex_net
Web-Hotel har stöd för aspSmartUpload.
Vill använda den formulär för att ladda upp bild i temp katalog på server.
(vid uppladdning av bilden ska skapas egen temp katalog för varje bild och på så sätt undvikas problem med bilder som har samma namn).
Sen hela formuläret ska sparas i access databas som text data typ
(namn på temp katalogen + bildens namn, samt andra fälten som namn, rubrik osv..)
Har försökt men det går inte fattar inte riktigt.
Finns det någon som har någon färdigt exempel, eller som kan hjälpa med den här formuläret
(kanske enklaste).
Har läst manualer på smartupload men det hjälper inte.
Tack!
-----------------------------------------------------------
Exempel på folmuläret!
------------------------------------------------------------
<html>
<head>
<title></title>
</head>
<body>
<form method="post" action="spara.asp" enctype="multipart/form-data">
<input type="text" name="Rubrik" size="20"><br>
<input type="password" name="pris" size="20"><br>
<textarea name="artikel" cols="45" rows="5"></textarea><br>
<input type="file" name="file" size="20"><br>
<input type="submit" value="upload"><br>
</form>
</body>
</html> :q
Varfor inte testa Overrides uploadskript istallet? Funkar skitbra och ar komponentlos! Jag har skrivit i den traden for bla fora in access db....
sen med att skapa mapp ar val FSO som galler :)
Vart finns Overrides uploadskript exempel hittar ej.
Har hittat några inlägg men inte själva skript.
Här har du en länk till scriptet: http://www.webforum.nu/showthread.php?s=&threadid=45211
Nån sa att man ska skappa ett bildnamns-generator för att undvika att två stycken personer kan ladda upp en bild med samma namn Typ 32434334_1700_453.gif. "
Hur kan man göra det praktiskt här i koden
---------------------------------------------------------------------------------
Set MyFile = ScriptObject.CreateTextFile(Server.mappath(filename))
--------------------------------------------------------------------------------
och sen visa här
response.write "<b>Filens sökväg:</b> " & Server.mappath(filename) & "<br>"
response.write "<b>Filnamn:</b> " & filename & "<br><br>"
response.write "<img src=""" & filename & """>"
---------------------------------------------------------------------------------
och spara i databas som text.
Jag är ingen proffs (nybörjare) tyvärr!
Tack!
<FORM name="add" METHOD="POST" ACTION="<%=Request.ServerVariables("SCRIPT_NAME")%>?action=save"
ENCTYPE="multipart/form-data"><br> Använd "bläddra"
och välj bild för uppladdning:<br>
<input type="FILE" name="FILE1" size="40">
<input type="SUBMIT" value="Spara" name="SUBMIT"></form>
If request.querystring("action")="save" then
On Error Resume Next
Dim mySmartUpload, myFile, namn, intCount, file, filslut
Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")
mySmartUpload.AllowedFilesList = "jpg,gif,png"
mySmartUpload.DenyPhysicalPath = False
mySmartUpload.MaxFileSize = 50000
mySmartUpload.Upload
filslut = right(mySmartUpload.files.item(1).FileName,4)'för att ta med .jpg .png eller .gif
intCount = mySmartUpload.files.item(1).saveas( sökväg & "/" & RecSet("Id") & filslut)
If Err Then
Response.Write("<b>Fel : </b>" & Err.description)
Else
Response.redirect("fungerar_OK.asp")
End If
Set mySmartUpload = nothing
END IF
RecSet("Id"), hämtar du från den post där sökvägen lagras i db:n
OBS ! Har inte testat koden, men principen förstår du nog ;)
Alex_net : Posta gärna din kod här när du får årdning på det, är nyfiken på den.
Macce, har testat din kod men det funkar ej....
Men eftersom har redan kommit en bit med "Overrides uploadskript" som är helt ok tycker jag, tänker också utveckla den vidare.
Har lyckats att spara i databas (som text) både laddade filen och andra formulärelement.
Har testat skriptet både på https://www.24-7webhosting.com som kör (Linux och Chilli Asp komp),
samt på https://www.swede.com (Win2000 Server) funkar helt ok...
Det är 3 saker som måste fixas innan är skriptet fult användbar:
1. Kontroll av bildstorlek (bild mindre än 250k) och bildtyp tex jpeg, gif.
2. Skapa ett bildnamns-generator för att undvika att två stycken personer kan ladda upp en bild med samma namn.
3. Tillåta att formuläret ska skickas och sparas i databas oavsett om jag har valt att lada bild eller ej. Eftersom det är ett blandat formulär som har andra formulärelement (namn, email osv…), och jag har inte behöv att alltid ladda filer ibland det räcker bara med andra formulärelement som namn, email….
Så långt har jag kommit med koden som funkar, det skulle vara trevlig om vi kan modifiera koden och lägga till ovannämnda funktioner.
Exempel på kod som är testat och funkar:
Default.asp
-----------------------------------------------------------------------------------
<html>
<head>
<title>Ladda upp fil</title>
</head>
<body>
<form method="post" action="../upload/outputfile.asp" enctype="multipart/form-data">
\<input type="text" name="namn"\>\<br\>
\<input type="text" name="email"\>\<br\>
\<input type="file" name="blob"\>\<br\>
\<input type="submit" value="Ladda upp, yo!"\>
</form>
</body>
</html>
-----------------------------------------------------------------------------------
outputfile.asp
-----------------------------------------------------------------------------------
<html>
<head>
<title>Upload</title>
</head>
<body>
<%
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
'Exempel på hur man kan 'plocka ner' andra forumlärelement
namn = UploadRequest.Item("namn").Item("Value")
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(filename))
For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next
MyFile.Close
response.write "<b>Filens sökväg:</b> " & Server.mappath(filename) & "<br>"
response.write "<b>Filnamn:</b> " & filename & "<br><br>"
response.write "<img src=""" & filename & """>"
response.write "<b>Filens email:</b> " & email & "<br>"
response.write "<b>Filens namn:</b> " & namn & "<br>"
namn = UploadRequest.Item("namn").Item("Value")
email = UploadRequest.Item("email").Item("Value")
'spara i databas
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Provider=Microsoft.Jet.OLEDB.4.0; "&\_
"Data Source="&Server.MapPath("/lada/test.mdb")
SQLStmt = "INSERT INTO lada (namn, email, filename) "
SQLStmt = SQLStmt & "VALUES('" & namn & "','" & email & "', '" & filename & "') "
Set RS = Connection.Execute(SQLStmt)
Connection.Close
%>
' upload.asp behövs ej modifieras
<!--#include file="../upload/upload.asp"-->
</body>
</html>
Generator behövs väl inte om du sparar bilden med samma namn som id:t i databasen.
Varför ska du spara själva bilden i databasen ?
Storleken ställer du enkelt i smartupload:
mySmartUpload.MaxFileSize = 250000
Giltiga bildtyper:
mySmartUpload.AllowedFilesList = "jpg,gif,png"
Har inte tittat på din komponentlösa upload, kanske går enkelt att ställa där med ?!?
Mvh