Hej Lite pseudokod: Här är hela min kod, den är rörig för tillfället och fungerar inte Hej igen Ingen som kan hjälpa mig med ett exempel på hur jag skall lägga de uppladdade filerna i en collection för att sedan loopa fram namnen på filerna, för att därefter kunna skapa thumbnails av dem? Försökte göra så här: Bara lite, du måste tilldela variabeln FileCollection ett värde, i det här fallet den collection med filer som har laddats upp. Som det ser ut nu så innehåller variabeln FileCollection ingenting (med andra ord, inte ens en tom collection), därför får du nullreferenceexception Ok, jag löste det på annat sätt.Flera thumbnails samtidigt
Jag har en uploadfunktion där användaren kan ladda upp två bilder samtidigt. När bilderna laddas upp skall även thumbnails skapas. Problemet med nedanstående kod är att den bara genererar en thumbnail till den första bilden, till den andra skapas ingen thumbnail.
Jag har kört fast och vet inte hur jag skall göra för att thumbnail-genereringen skall gälla för båda bilderna.
Tack på förhand!
/Per
Sub Thumbnails()
Dim bm As Bitmap = System.Drawing.Image.FromFile(m_strFolderName & (m_strFileName))
'Declare Thumbnails Height and Width
Dim newWidth As Integer = 120
Dim newHeight As Integer = (newWidth / bm.Width) * bm.Height
'Create the new image as a blank bitmap
Dim resized As Bitmap = New Bitmap(newWidth, newHeight)
'Create a new graphics object with the contents of the origional image
Dim g As Graphics = Graphics.FromImage(resized)
'Resize graphics object to fit onto the resized image
g.DrawImage(bm, New Rectangle(0, 0, resized.Width, resized.Height), 0, 0, bm.Width, bm.Height, GraphicsUnit.Pixel)
'Get rid of the evidence
g.Dispose()
'Create new path and filename for the resized image
Dim newStrFileName As String = m_strFolderName & "T_" & m_strFileName
'Save the new image to the same folder as the origional
resized.Save(newStrFileName, ImageFormat.Jpeg)
End Sub
Sv:Flera thumbnails samtidigt
'1: lägg alla uppladdade filer i en collection
'2: loopa genom alla filer i den collection
for each loFile in CollectionOfFiles
myThumbnail = FunctionThatMakesAThumbNail(loFile)
nextSv: Flera thumbnails samtidigt
Jag får felet i funktionen FunctionThatMakesAThumbNail att m_strFileName och m_strFolderName inte är deklarerade.
Sub UploadMultipleFiles_Clicked(ByVal Sender As Object, ByVal e As EventArgs)
'Variable to hold the result
Dim m_strResultMessage As String
'Variable to hold the FileName
Dim m_strFileName As String
'Variable FolderName where the files will be saved
Dim m_strFolderName As String = "C:\Inetpub\wwwroot\popo.se\bildgalleri\"
'Variable to hold the File
Dim m_objFile As HttpPostedFile
'Variable used in the Loop
Dim i As Integer
Try
'Loop Through the Files
For i = 0 To Request.Files.Count - 1
'Get the HttpPostedFile
m_objFile = Request.Files(i)
'Check that the File exists has a name and is not empty
If Not (m_objFile Is Nothing Or m_objFile.FileName = "" Or m_objFile.ContentLength < 1) Then
'Get the name of the file
m_strFileName = m_objFile.FileName
m_strFileName = Path.GetFileName(m_strFileName)
'Creates the folder if it does not exists
If (Not Directory.Exists(m_strFolderName)) Then
Directory.CreateDirectory(m_strFolderName)
End If
'Save each uploaded file
m_objFile.SaveAs(m_strFolderName & m_strFileName)
'Assign the File Name and File Type to Result
m_strResultMessage = m_strResultMessage & "Uploaded File: " & m_objFile.FileName & " of type " & m_objFile.ContentType & " <br> "
'Hide the Multiple Form Upload Panel
MultipleFileUploadForm.Visible = False
End If
Next
'If no files where selected provide a user friendly message
If m_strResultMessage = "" Then
m_strResultMessage = "Select atleast one file to upload."
End If
Catch errorVariable As Exception
'Trap the exception
m_strResultMessage = errorVariable.ToString()
End Try
'Spara i databasen
Dim Filename1 As String = Path.GetFileName(File1.PostedFile.FileName)
Dim Filename2 As String = Path.GetFileName(File2.PostedFile.FileName)
Dim strConn As String = (ConfigurationSettings.AppSettings("Dbas"))
Dim commandText As String = "INSERT INTO tBilder (Bild1, Bild2, GalleriNamn) VALUES (@Filename, @Filename2, @GalleriNamn)"
Dim MyConn As OleDbConnection = New OleDbConnection(strConn)
Dim objCmd As OleDbCommand = New OleDbCommand(commandText, MyConn)
objCmd.Parameters.Add(New OleDbParameter("@Filename", OleDbType.VarChar, 50)).Value = Filename1
objCmd.Parameters.Add(New OleDbParameter("@Filename2", OleDbType.VarChar, 50)).Value = Filename2
objCmd.Parameters.Add(New OleDbParameter("@GalleriNamn", OleDbType.VarChar, 50)).Value = tbGalleriNamn.Text
Try
objCmd.Connection.Open()
objCmd.ExecuteNonQuery()
Catch ex As Exception
'Response.Write(commandText)
ResultMsg.Text = "Ett fel uppstod när databasen skulle uppdateras"
End Try
objCmd.Connection.Close()
'Unhide the Result Label
ResultMsg.Visible = True
'Assign the Result to ResultMsg Label Text
ResultMsg.Text = m_strResultMessage
'Skapa thumbnails
Dim bm As Bitmap = System.Drawing.Image.FromFile(m_strFolderName & (m_strFileName))
'Declare Thumbnails Height and Width
Dim newWidth As Integer = 120
Dim newHeight As Integer = (newWidth / bm.Width) * bm.Height
'Create the new image as a blank bitmap
Dim resized As Bitmap = New Bitmap(newWidth, newHeight)
'Create a new graphics object with the contents of the origional image
Dim g As Graphics = Graphics.FromImage(resized)
'Resize graphics object to fit onto the resized image
g.DrawImage(bm, New Rectangle(0, 0, resized.Width, resized.Height), 0, 0, bm.Width, bm.Height, GraphicsUnit.Pixel)
'Get rid of the evidence
g.Dispose()
'Create new path and filename for the resized image
Dim newStrFileName As String = m_strFolderName & "T_" & m_strFileName
'Save the new image to the same folder as the origional
resized.Save(newStrFileName, ImageFormat.Jpeg)
'Loopa igenom bilderna och kör Thumbnailfunktionen
Dim loFile As String
Dim CollectionOfFiles As String()
For Each loFile In CollectionOfFiles
FunctionThatMakesAThumbNail(loFile)
Next
End Sub
Function FunctionThatMakesAThumbNail(ByVal loFile)
'Skapa thumbnails
Dim bm As Bitmap = System.Drawing.Image.FromFile(m_strFolderName & (m_strFileName))
'Declare Thumbnails Height and Width
Dim newWidth As Integer = 120
Dim newHeight As Integer = (newWidth / bm.Width) * bm.Height
'Create the new image as a blank bitmap
Dim resized As Bitmap = New Bitmap(newWidth, newHeight)
'Create a new graphics object with the contents of the origional image
Dim g As Graphics = Graphics.FromImage(resized)
'Resize graphics object to fit onto the resized image
g.DrawImage(bm, New Rectangle(0, 0, resized.Width, resized.Height), 0, 0, bm.Width, bm.Height, GraphicsUnit.Pixel)
'Get rid of the evidence
g.Dispose()
'Create new path and filename for the resized image
Dim newStrFileName As String = m_strFolderName & "T_" & m_strFileName
'Save the new image to the same folder as the origional
resized.Save(newStrFileName, ImageFormat.Jpeg)
End Function
Sv:Flera thumbnails samtidigt
Strunt i föregånde meddelande, har strukturerat upp det så det funkar som tidigare.
Hur menar du att jag skall skriva loopen och samla filerna i en collection, kan du ge ett nytt exempel?Sv: Flera thumbnails samtidigt
Ursäkta min otålighet!
//PerSv:Flera thumbnails samtidigt
Sub Success()
Dim File As HttpPostedFile
Dim FileCollection As HttpFileCollection
Dim Thumbnail As String
For Each File In FileCollection
Thumbnail = SkapaThumbnail(File)
Next
End Sub
Men fick då felet:
System.NullReferenceException: Object reference not set to an instance of an object.
Är jag helt ute och cyklar?Sv: Flera thumbnails samtidigt
Sv:Flera thumbnails samtidigt
Tack för svaret ändå!
Om någon vill se koden så kan jag posta den senare.
//Per