AnnakayMedlem sedan sep. 2003117 inlägg
Jag har ett uploadscript (MultiPowUpload) som jag vill modifiera så att jag kan:
där jag vill:
- Byta ut filnamnet
- Spara filer i flera olika format mha AspJpeg
'Calls Upload to extract the data from the binary request and then saves the uploaded files
Public Sub Save(path)
Dim streamFile, fileItem, postfiles
if Right(path, 1) <> "\" then path = path & "\"
if not uploadedYet then Upload
if UploadedFiles.Count > 0 Then
postfiles = UploadedFiles.Items
set fileItem = postfiles(0)
If IsObject(fileItem) Then
Set streamFile = Server.CreateObject("ADODB.Stream")
streamFile.Type = 1
streamFile.Open
StreamRequest.Position=fileItem.Start
StreamRequest.CopyTo streamFile, fileItem.Length
streamFile.SaveToFile path & fileItem.FileName, 2
streamFile.close
Set streamFile = Nothing
fileItem.Path = path & fileItem.FileName
End If
End If
End Sub
Jag har ett befintligt script för att spara den aktuella filen i olika format, samt att det matas in i databasen. Först skapas en post med ett ImageGUID som sedan blir filnamnet i de filer som sparas. Sist uppdateras posten med sökvägar, filstorlek och annat.
strSQL = "SET NOCOUNT ON" & vbCrLf &_
"INSERT INTO g_Bilder ([User], Folder) VALUES (0, " & safeSQL(folder) & ")" & vbCrLf &_
"SELECT ImageGUID, ID FROM g_Bilder WHERE id = @@IDENTITY"
Set objRS = oConn.Execute(strSQL)
strGUID = objRS("ImageGUID")
strID = objRS("ID")
strPath = "img/gallery/bilder/" & strGUID & objFile.Ext
objRS.Close : Set objRS = Nothing
objFile.SaveAs(Server.MapPath(strPath))
Set objJPEG = Server.CreateObject("Persits.JPEG")
objJPEG.Open(Server.MapPath(strPath))
strPixel = objJPEG.OriginalWidth & "x" & objJPEG.OriginalHeight
If objJPEG.Width >= objJPEG.Height AND objJPEG.Width > 150 Then
objJPEG.Width = 150
objJPEG.Height = 150*objJPEG.Height/objJPEG.OriginalWidth
End If
If objJPEG.Height > objJPEG.Width AND objJPEG.Height > 150 Then
objJPEG.Height = 150
objJPEG.Width = 150*objJPEG.Width/objJPEG.OriginalHeight
End If
objJPEG.Save(Server.MapPath("img/gallery/bilder/th_" & strGUID & objFile.Ext))
strThumb = "img/gallery/bilder/th_" & strGUID & objFile.Ext
objJPEG.Open(Server.MapPath(strPath))
If objJPEG.Width >= objJPEG.Height AND objJPEG.Width > 600 Then
objJPEG.Width = 600
objJPEG.Height = 600*objJPEG.Height/objJPEG.OriginalWidth
End If
If objJPEG.Height > objJPEG.Width AND objJPEG.Height > 600 Then
objJPEG.Height = 600
objJPEG.Width = 600*objJPEG.Width/objJPEG.OriginalHeight
End If
objJPEG.Save(Server.MapPath("img/gallery/bilder/sp_" & strGUID & objFile.Ext))
strSample = "img/gallery/bilder/sp_" & strGUID & objFile.Ext
objJPEG.Open(Server.MapPath(strPath))
If objJPEG.Width >= objJPEG.Height AND objJPEG.Width > 75 Then
objJPEG.Width = 75
objJPEG.Height = 75*objJPEG.Height/objJPEG.OriginalWidth
End If
If objJPEG.Height > objJPEG.Width AND objJPEG.Height > 75 Then
objJPEG.Height = 75
objJPEG.Width = 75*objJPEG.Width/objJPEG.OriginalHeight
End If
objJPEG.Save(Server.MapPath("img/gallery/bilder/pb_" & strGUID & objFile.Ext))
strPic = "img/gallery/bilder/pb_" & strGUID & objFile.Ext
intSize = Round(objFile.Size/1024)
If intSize = 0 Then intSize = 1
strSQL = "UPDATE g_Bilder SET Path = '" & safeSQL(strPath) & "', ThumbnailPath = '" & safeSQL(strThumb) & "', PicboxPath = '" & safeSQL(strPic) & "', SamplePath = '" & safeSQL(strSample) & "', PixelSize = '" & safeSQL(strPixel) & "', Size = " & intSize & " WHERE ID = '" & strID & "'"
oConn.Execute strSQL,,128
Jag behöver hjälp med att integrera dessa script med varandra. Åtminstone en fingervisning då jag inte är riktigt haj på vad alla kodrader gör.
AnnakayMedlem sedan sep. 2003117 inlägg
Jag kan säga att jag HAR försökt men jag får bara ett 500-felmeddelande (indatat kommer från en Flash-applikation som genererar det meddelandet, jag har slagit på Friendly error messages i webbläsaren utan att få vettigare felmeddelande så jag vet inte VAR felet ligger)
'Calls Upload to extract the data from the binary request and then saves the uploaded files
Public Sub Save(path)
Dim streamFile, fileItem, postfiles
if Right(path, 1) <> "\" then path = path & "\"
if not uploadedYet then Upload
if UploadedFiles.Count > 0 Then
postfiles = UploadedFiles.Items
set fileItem = postfiles(0)
If IsObject(fileItem) Then
strSQL = "SET NOCOUNT ON" & vbCrLf &_
"INSERT INTO g_Bilder ([User], Folder) VALUES (0, " & safeSQL(folder) & ")" & vbCrLf &_
"SELECT ImageGUID, ID FROM g_Bilder WHERE id = @@IDENTITY"
Set objRS = oConn.Execute(strSQL)
strGUID = objRS("ImageGUID")
strID = objRS("ID")
if Mid(Reverse(fileitem.FileName),4,1) = "." THEN
FileExt = Right(fileItem.FileName, 4)
elseif Mid(Reverse(fileitem.FileName),5,1) = "." THEN
FileExt = Right(fileItem.FileName, 4)
else
FileExt = ".jpg"
End if
strPath = path & strGUID & FileExt
objRS.Close : Set objRS = Nothing
Set streamFile = Server.CreateObject("ADODB.Stream")
streamFile.Type = 1
streamFile.Open
StreamRequest.Position=fileItem.Start
StreamRequest.CopyTo streamFile, fileItem.Length
streamFile.SaveToFile strPath, 2
streamFile.close
Set streamFile = Nothing
fileItem.Path = strPath
Set objJPEG = Server.CreateObject("Persits.JPEG")
objJPEG.Open(Server.MapPath(strPath))
strPixel = objJPEG.OriginalWidth & "x" & objJPEG.OriginalHeight
If objJPEG.Width >= objJPEG.Height AND objJPEG.Width > 150 Then
objJPEG.Width = 150
objJPEG.Height = 150*objJPEG.Height/objJPEG.OriginalWidth
End If
If objJPEG.Height > objJPEG.Width AND objJPEG.Height > 150 Then
objJPEG.Height = 150
objJPEG.Width = 150*objJPEG.Width/objJPEG.OriginalHeight
End If
strThumb = path & "th_" & strGUID & FileExt
Set streamFile = Server.CreateObject("ADODB.Stream")
streamFile.Type = 1
streamFile.Open
StreamRequest.Position=fileItem.Start
StreamRequest.CopyTo streamFile, fileItem.Length
streamFile.SaveToFile strThumb, 2
streamFile.close
Set streamFile = Nothing
fileItem.Path = strThumb
objJPEG.Open(Server.MapPath(strPath))
If objJPEG.Width >= objJPEG.Height AND objJPEG.Width > 600 Then
objJPEG.Width = 600
objJPEG.Height = 600*objJPEG.Height/objJPEG.OriginalWidth
End If
If objJPEG.Height > objJPEG.Width AND objJPEG.Height > 600 Then
objJPEG.Height = 600
objJPEG.Width = 600*objJPEG.Width/objJPEG.OriginalHeight
End If
strSample = path & "sp_" & strGUID & FileExt
Set streamFile = Server.CreateObject("ADODB.Stream")
streamFile.Type = 1
streamFile.Open
StreamRequest.Position=fileItem.Start
StreamRequest.CopyTo streamFile, fileItem.Length
streamFile.SaveToFile strSample, 2
streamFile.close
Set streamFile = Nothing
fileItem.Path = strSample
objJPEG.Open(Server.MapPath(strPath))
If objJPEG.Width >= objJPEG.Height AND objJPEG.Width > 75 Then
objJPEG.Width = 75
objJPEG.Height = 75*objJPEG.Height/objJPEG.OriginalWidth
End If
If objJPEG.Height > objJPEG.Width AND objJPEG.Height > 75 Then
objJPEG.Height = 75
objJPEG.Width = 75*objJPEG.Width/objJPEG.OriginalHeight
End If
strPic = path & "pb_" & strGUID & FileExt
Set streamFile = Server.CreateObject("ADODB.Stream")
streamFile.Type = 1
streamFile.Open
StreamRequest.Position=fileItem.Start
StreamRequest.CopyTo streamFile, fileItem.Length
streamFile.SaveToFile strPic, 2
streamFile.close
Set streamFile = Nothing
fileItem.Path = strPic
intSize = Round(objFile.Size/1024)
If intSize = 0 Then intSize = 1
strSQL = "UPDATE g_Bilder SET Path = '" & safeSQL(strPath) & "', ThumbnailPath = '" & safeSQL(strThumb) & "', PicboxPath = '" & safeSQL(strPic) & "', SamplePath = '" & safeSQL(strSample) & "', PixelSize = '" & safeSQL(strPixel) & "', Size = " & intSize & " WHERE ID = '" & strID & "'"
oConn.Execute strSQL,,128
@ndersMedlem sedan juni 200026 914 inlägg
Friendly error messages ska ju vara av, inte på.
Börja med det, och återkom sedan.
Mvh
AnnakayMedlem sedan sep. 2003117 inlägg
@nders skrev:
Friendly error messages ska ju vara av, inte på.
Börja med det, och återkom sedan.
Mvh
Ja, det var det jag menade. :r Jag har haft det avslaget ett bra tag... Jag får vettiga felmeddelanden överallt annars, men inte nu. Förmodligen eftersom det är själva Flash-delen som genererar felmeddelandet.
"HTTP Error, '500' occurred. Internal Server Error. Usually it means that receiving script have errors.
Please see http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1 error code definitions for more information. "
Det är allt jag får, inte så hjälpande direkt...
AnnakayMedlem sedan sep. 2003117 inlägg
Hmm, jag har stegat mig igenom hela koden och kommit fram till att det är raden som skapar en connection till databasen som stör.
Set oConn = server.CreateObject("ADODB.Connection")
Jag måste ju ha en connection till databasen... Någon som har en idé om hur jag kommer förbi detta?
@ndersMedlem sedan juni 200026 914 inlägg
Var har du den raden då? Det behöver ju inte vara exakt den raden, utan kanske något i närheten. Så - hur ser koden där ut?
Har du testat att köra scriptet utan flash-delen, dvs med ett vanligt html-formulär?
Om du kör detta på en egen IIS kan det också vara så att IIS-en ger dig ett felmeddelande du inte vill ha. Vissa webhotell slänger också ut 500-fel utan mer information, ex Crystone.
AnnakayMedlem sedan sep. 2003117 inlägg
Var jag än placerar den raden så bryter den just där. Jag har haft den först i koden, mitt i och efter själva skrivandet till disk, då laddades bilden upp men jag fick felmeddelande när databasen skulle kontaktas. Om jag tar själva originalscriptet (det utan databasanrop och AspJPEG-kod) så laddar den upp som den ska, men lägger jag till den enda raden:
Set oConn = server.CreateObject("ADODB.Connection")
(efter att jag deklarerat variabeln oConn) så fungerar det inte. Så jag är tämligen säker på att det är den raden som stör.
Jag ska prova att köra via ett vanligt formulär och se om jag får nåt vettigare felmeddelande...