mrkdenz
mrkdenz

Reputation: 89

upload multiple files to a local folder in vb.net

I am trying to create a function that will allow user to upload multiple files to a local folder.

currently i am able to upload just one file. i needed to upload more files in one go.

what i use for opening files/folder

 a.Multiselect = True
    If a.ShowDialog() = Windows.Forms.DialogResult.OK Then
        removeatt.Show()
        removeatt.Text = "Remove Attachment"
        fpath.Text = a.FileName
        address.Text = System.IO.Path.GetFileName(a.FileName)
        Dim file As String
        file = fpath.Text.ToString
        Label7.Text = file
        If fpath.Text = "-" Then
            removeatt.Hide()
        Else
            removeatt.Show()
        End If
    End If

what i use for saving attachment

If fpath.Text = "-" Then
        Else
            My.Computer.FileSystem.CopyFile(fpath.Text = "-", dir2 + Upload.Label16.Text, Microsoft.VisualBasic.FileIO.UIOption.AllDialogs, Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing)
        End If

any help is appreciated

thanks

Upvotes: 1

Views: 2580

Answers (2)

mr_w_snipes
mr_w_snipes

Reputation: 171

Well, have a look at the example from MSDN here, it has a filepicker and then it puts the objects in an array you can loop through and copy it where you want it to copy.

Here is the MSDN-original Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    InitializeOpenFileDialog()
End Sub

Private Sub Selectfilebutton_Click_1(sender As Object, e As EventArgs) Handles Selectfilebutton.Click
    Dim dr As DialogResult = Me.OpenFileDialog1.ShowDialog()
    If (dr = System.Windows.Forms.DialogResult.OK) Then
        ' Read the files 
        Dim file As String
        For Each file In OpenFileDialog1.FileNames

            '' you can loop through the array of objects and use a function to do the copying 
            ' so for instance with my function it would be :
            ' copytodisk(Destination, file.filename)


            ' Create a PictureBox for each file, and add that file to the FlowLayoutPanel. 
            Try
                Dim pb As New PictureBox()
                Dim loadedImage As Image = Image.FromFile(file)
                pb.Height = loadedImage.Height
                pb.Width = loadedImage.Width
                pb.Image = loadedImage
                FlowLayoutPanel1.Controls.Add(pb)
            Catch SecEx As SecurityException
                ' The user lacks appropriate permissions to read files, discover paths, etc.
                MessageBox.Show("Security error. Please contact your administrator for details.\n\n" & _
                    "Error message: " & SecEx.Message & "\n\n" & _
                    "Details (send to Support):\n\n" & SecEx.StackTrace)
            Catch ex As Exception
                ' Could not load the image - probably permissions-related.
                MessageBox.Show(("Cannot display the image: " & file.Substring(file.LastIndexOf("\"c)) & _
                ". You may not have permission to read the file, or " + "it may be corrupt." _
                & ControlChars.Lf & ControlChars.Lf & "Reported error: " & ex.Message))
            End Try
        Next file
    End If
End Sub

Public Sub InitializeOpenFileDialog()
    ' Set the file dialog to filter for graphics files. 
    Me.OpenFileDialog1.Filter = _
            "Images (*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|" + _
            "All files (*.*)|*.*"

    ' Allow the user to select multiple images. 
    Me.OpenFileDialog1.Multiselect = True
    Me.OpenFileDialog1.Title = "My Image Browser"
End Sub

Upvotes: 0

mr_w_snipes
mr_w_snipes

Reputation: 171

It is not entirely clear to me where you handle the selected files, the first one is about removing attachments and the saving-part is not about uploading, it saves a file to the disk of the user as it seems.

Generally i'd recommend you to write a function that handles one file at a time so you can feed the function with the list of files to be copied in a for each-loop. The function is a bit "basic" to demonstrate what i mean.

Public Function CopyToDisk(ByVal DestinationPath As String, ByVal Sourcepath As String) As String


    If Not System.IO.File.Exists(Sourcepath) Then
        Return "Source missing" & Sourcepath
    End If


    Try
        File.Copy(Sourcepath, DestinationPath)

    Catch ex As Exception
        Return ex.Message
    End Try

    Return "ok"

End Function

Upvotes: 1

Related Questions