20. august 2004 - 20:41Der er
39 kommentarer og 1 løsning
Jeg skal have en special upload-funktion !
Hej, Eksperter...
Jeg er ved at lave en hjemme side, men mangler en upload-funktion... Vil i ikke hjælpe mig med at lave en...? Den skal gerne kunne:
Kun uploade GIF og JPEG billeder (MAX 100.000) bytes Skal have en resize-funktion på hvis billedet er over 640*480 pixel Og sist men ikke minst skal den tilføje "width" & "height" på billedet til en databasse...
Får 200 point - hvis ikke alle punkterne kan lade sig gøre... så skidt med det...
Ja det nok derfor du har oprettet i ASP kategorien :) For at upload kræver det en upload komponet (ASPUpload, SAUpload, ASPSmartUpload,...) , hvis ikke dit web-hotel har en upload komponent må man lave upload koden uden komponenten, hvilket er lidt mere besværlidt. For at resize kræver det et billede komponent (ASPimage, ...), hvis dit web-hotel har en billede komponent kan man ikke resize et billed.
Har du ikke et link til dit web-hotel? Så vi præsis ved hvilke komponenter der kan bruges. Ja jeg har en del kode, men det nytter jo ikke meget at vise noget kode som bruger ASPupload til upload, hvis du kun har mulughed for at bruge ASPSmartUpload :)
Du kommer ikke til at kunne få en resize funktion, da de ikke udersytter en billede komponent. Hvilke komponenter kan jeg benytte mig af i min ASP kode? Til ASP er tilknyttet flg. komponenter JMail, ASPsmartupload og w3Sockets
Ja du kommer til at lave 3 filer. En fil som includes som kan finde størrelse højde, brede på et billede. Lav en fil og copy/paste koden ind i den:
Filen imgsize.asp
<% '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: '::: ::: '::: This routine will attempt to identify any filespec passed ::: '::: as a graphic file (regardless of the extension). This will ::: '::: work with BMP, GIF, JPG and PNG files. ::: '::: ::: '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: '::: Based on ideas presented by David Crowell ::: '::: (credit where due) ::: '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: '::: blah blah blah blah blah blah blah blah blah blah blah blah ::: '::: blah blah blah blah blah blah blah blah blah blah blah blah ::: '::: blah blah Copyright *c* MM, Mike Shaffer blah blah ::: '::: blah blah ALL RIGHTS RESERVED WORLDWIDE blah blah ::: '::: blah blah Permission is granted to use this code blah blah ::: '::: blah blah in your projects, as long as this blah blah ::: '::: blah blah copyright notice is included blah blah ::: '::: blah blah blah blah blah blah blah blah blah blah blah blah ::: '::: blah blah blah blah blah blah blah blah blah blah blah blah ::: ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: '::: ::: '::: This function gets a specified number of bytes from any ::: '::: file, starting at the offset (base 1) ::: '::: ::: '::: Passed: ::: '::: flnm => Filespec of file to read ::: '::: offset => Offset at which to start reading ::: '::: bytes => How many bytes to read ::: '::: ::: '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: function GetBytes(flnm, offset, bytes)
Dim objFSO Dim objFTemp Dim objTextStream Dim lngSize
on error resume next
Set objFSO = CreateObject("Scripting.FileSystemObject")
' First, we get the filesize Set objFTemp = objFSO.GetFile(flnm) lngSize = objFTemp.Size set objFTemp = nothing
fsoForReading = 1 Set objTextStream = objFSO.OpenTextFile(flnm, fsoForReading)
if offset > 0 then strBuff = objTextStream.Read(offset - 1) end if
if bytes = -1 then ' Get All!
GetBytes = objTextStream.Read(lngSize) 'ReadAll
else
GetBytes = objTextStream.Read(bytes)
end if
objTextStream.Close set objTextStream = nothing set objFSO = nothing
end function
'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: '::: ::: '::: Functions to convert two bytes to a numeric value (long) ::: '::: (both little-endian and big-endian) ::: '::: ::: '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: function lngConvert(strTemp) lngConvert = clng(asc(left(strTemp, 1)) + ((asc(right(strTemp, 1)) * 256))) end function
function lngConvert2(strTemp) lngConvert2 = clng(asc(right(strTemp, 1)) + ((asc(left(strTemp, 1)) * 256))) end function
'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: '::: ::: '::: This function does most of the real work. It will attempt ::: '::: to read any file, regardless of the extension, and will ::: '::: identify if it is a graphical image. ::: '::: ::: '::: Passed: ::: '::: flnm => Filespec of file to read ::: '::: width => width of image ::: '::: height => height of image ::: '::: depth => color depth (in number of colors) ::: '::: strImageType=> type of image (e.g. GIF, BMP, etc.) ::: '::: ::: '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: function gfxSpex(flnm, width, height, depth, strImageType)
dim strPNG dim strGIF dim strBMP dim strType strType = "" strImageType = "(unknown)"
Sidste fil skal hedde upload.asp koden som uploader og gemmer i databasen.
Der er to stedre du skal rette i filen 1. Connection strengen til databse så den passer med dit 2. Hvor filen skal gemmens lige det er denne linje, lige nu er det i en folder som hedder billeder som ligger i roden: billedeNavn = "/billeder/" & file.FileName
<!--include file="imgsize.asp"--> <HTML> <BODY> <% 'On Error Resume Next Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload") 'definer hvilke fil typer der tillades mySmartUpload.AllowedFilesList = "gif,jpg,jpeg" 'Max størrelse på file mySmartUpload.MaxFileSize = 100000 'henter post data så andre form felter kan hentes med mySmartUpload.form("xxx") mySmartUpload.Upload
if not mySmartUpload.files("FILE1").ismissing then Set file = mySmartUpload.files("FILE1") 'Gem filen 'Vælg hvor filen skal gemmes billedeNavn = "/billeder/" & file.FileName file.SaveAs billedeNavn
gfxSpex(Server.Mappath(billedeNavn), w, h, c, strType Set Conn = Server.CreateObject("ADODB.Connection") 'Tjek connection strengen er rigtig Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("/db/db.mdb")
SQL = "insert into TabelNavn (billedenavn, width, height) values ('" & billedeNavn & "', " & w & ", " & h & ")" Conn.Execute(SQL) Conn.Close Set Conn=Nothing end if
if billedeNavn <> "" then Response.Write "Filen " & billedeNavn & " er uploadet." else Response.Write "Ingen fil uploadet" end if
Denne script tilføjer ikke height og width til DB...! ved du ikke helt tilfældigvis hvis nu man har Set objFSO = CreateObject("Scripting.FileSystemObject") -- hvordan man fremkalder width og height???
Ja det kan man sige, men man kan lave selve upload kode det på 2-6 linjer hvis ikke der skal gemmes i database, eller tjekke på fil størrelse og type. Det med at finde bredde og højde fylder jo ikke andet end en linje kode i upload.asp filen.
Det betyder den kun går ind i then delen af if sætningen hvis man har valgt en fil. Hvis der ikke er valgt en fil og trykke "send" kommer der ikke en tom post i databsen.
Fejltype: Der opstod en Microsoft VBScript-kompileringsfejl (0x800A03EE) Tegnet ')' var ventet upload.asp, line 21, column 53 gfxSpex(Server.Mappath(billedeNavn), w, h, c, strType ----------------------------------------------------^
Og hvis jeg sætter ) ind få jeg feljen
Der kan ikke bruges parenteser ved kald af en Sub /admin/design/opload/upload/upload.asp, line 21, column 46 gfxSpex(Server.Mappath(billedeNavn), w, h, c, strType)
Kan godt oprette et nyt spm hvis du vil have point for dette??????
Synes godt om
Ny brugerNybegynder
Din løsning...
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.