none
請問有什麼方法可以同時上傳多個檔案? RRS feed

  • 問題

  •  

    as title!!

    傳單一的檔案,劣者已經知道方法了!

    想請問要如何才能同時上傳個檔案?或者是要如何做才能像cuteftp的佇列排程,當第一個上傳完會進行下一個...

    劣者搜尋討論區都沒有相關的文章,能否請vb.net的高手指點一二,劣者銘感五內!!

     

    2007年7月27日 下午 06:22

解答

  • 你的內容有矛盾,建議你自己先確認。

     

    同時就不是一個接一個,是一次兩個以上才會叫同時,相關討論請搜尋多緒、委派。

     

    一個接一個的話,先建立一個清單,比如說 ListView,再按照清單迴圈執行。

     

     

     

    2007年7月28日 上午 12:47
    版主

所有回覆

  • 你的內容有矛盾,建議你自己先確認。

     

    同時就不是一個接一個,是一次兩個以上才會叫同時,相關討論請搜尋多緒、委派。

     

    一個接一個的話,先建立一個清單,比如說 ListView,再按照清單迴圈執行。

     

     

     

    2007年7月28日 上午 12:47
    版主
  •  璉璉 寫信:

    你的內容有矛盾,建議你自己先確認。

     

    同時就不是一個接一個,是一次兩個以上才會叫同時,相關討論請搜尋多緒、委派。

     

    一個接一個的話,先建立一個清單,比如說 ListView,再按照清單迴圈執行。

     

     

     

     

    嗯嗯...因為同學只說"要能按一個Button就把我們要傳的東西通通傳過去才行"...

    所以我才想是1.一次發送多個 2.像cuteftp佇列 (應該就是大大所說的一個接一個)

     

    感謝大大指點,劣者試看看,有問題再請教~

    2007年7月28日 上午 03:32
  •  

    不好意思...listview控制項要怎麼使用?

    能否麻煩大大教一下?或是那裡有教學文件可以查看?

    2007年7月28日 下午 03:52
  • http://msdn2.microsoft.com/zh-tw/library/s2edxtd5(VS.80).aspx

     

    最好安裝線上手冊,不然網頁會看到受不了。

    2007年7月28日 下午 04:14
    版主
  •  璉璉 寫信:
    http://msdn2.microsoft.com/zh-tw/library/s2edxtd5(VS.80).aspx

     

    最好安裝線上手冊,不然網頁會看到受不了。

     

    請問一下大大,

    使用listview的目的大概是否為這樣呢?

    用openfiledialog開啟檔案,存放至textbox後,再將testbox的內容存進listview(檔案清單)?

     

    openfiledialog可以一次開啟多個檔嗎?

    ~~~~~~~~~~~~~~~~~~~~~~~~~

    嗯..我找到其屬性Multiselect,可以一次開啟多個.....但textbox只能存一個!

    若將openfiledialog其屬性設定為Multiselect後,能將開啟所選的檔案直接存進listview嗎?

    2007年7月28日 下午 05:01
  • OpenFileDialog 並不幫你開啟檔案,只幫你做檔案選擇的對話盒。

     

    線上手冊就有範例,詳參見線上手冊。

    OpenFileDialog.Multiselect 屬性

    線上手冊:ms-help://MS.MSDNQTR.v80.cht/MS.MSDN.v80/MS.NETDEVFX.v20.cht/cpref32/html/P_System_Windows_Forms_OpenFileDialog_Multiselect.htm
            For Each file In OpenFileDialog1.FileNames
                    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)
            Next file

     

     


    2007年7月29日 上午 01:42
    版主
  •  璉璉 寫信:

    OpenFileDialog 並不幫你開啟檔案,只幫你做檔案選擇的對話盒。

     

    線上手冊就有範例,詳參見線上手冊。

    OpenFileDialog.Multiselect 屬性

    線上手冊:ms-help://MS.MSDNQTR.v80.cht/MS.MSDN.v80/MS.NETDEVFX.v20.cht/cpref32/html/P_System_Windows_Forms_OpenFileDialog_Multiselect.htm
            For Each file In OpenFileDialog1.FileNames
                    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)
            Next file

     

     


     

    嗯...不好意思!

    可能是劣者表達有誤!!

    我的意思是經由openfiledialog選取的檔案,可將其值直接丟給listview,形成listview裡的清單嗎?

    2007年7月29日 上午 04:37
  • 把線上手冊關於 OpenFileDialog.FileNames 及 ListView.Items 看完就知道了。

     

     

    2007年7月29日 上午 08:02
    版主
  •  璉璉 寫信:

    把線上手冊關於 OpenFileDialog.FileNames 及 ListView.Items 看完就知道了。

     

     

     

    嗯嗯! 感謝大大指點!

    劣者已初步寫了個簡略的...

    選取檔案至清單

        Private Sub btnSelect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSelect.Click
            With OpenFileDialog1
                .Filter = "All files (*.*)|*.*"

                .Title = "Select File"
            End With
            '打開對話框

            OpenFileDialog1.ShowDialog()
            Dim FileNames() As String
            '把選擇的檔案都加入到ListView上。
            FileNames = OpenFileDialog1.FileNames
            Dim i As Int16
            For i = 0 To FileNames.Length - 1 Step 1
                ListView1.Items.Add(Path.GetFileName(FileNames(i)))
            Next
        End Sub

     

     

    圖: http://farm2.static.flickr.com/1434/937602562_34565dd57f.jpg?v=0

     

    那請問一下listview裡所呈現的項目,若要抓取第一筆值(如圖示: 01. 夢裡花.mp3)是ListView1.Add(0) 嗎?

    2007年7月29日 上午 09:05
  • ListView1.Items(1)

     

    ListView 是用來做檔案總管右側那種,可能會有時間、檔案大小等資訊,如果只是要你圖中的東西,用 ListBox 即可。

     

    2007年7月29日 下午 01:58
    版主
  •  璉璉 寫信:

    ListView1.Items(1)

     

    ListView 是用來做檔案總管右側那種,可能會有時間、檔案大小等資訊,如果只是要你圖中的東西,用 ListBox 即可。

     

     

    嗯嗯! 了解~

    我有在listview增加其它欄位,並抓取檔案的檔名、大小、修改時間等資訊!

    感謝大大指點~

    接下來針對資料來做傳送動作...有問題再請教大大!^^

    2007年7月29日 下午 03:43
  • 請問一下,假設第一次按button,選取了1.txt,2.jpg,3.doc,ListView裡會呈現

    ==============

    1.txt

    2.jpg

    3.doc

     

    再按一次button,選取44.mp3,55.mpg,66.avi,則此時ListView裡會變為

    ==============

    1.txt

    2.jpg

    3.doc

    44.mp3

    55.mpg

    66.avi

     

    這樣的話,是ListView裡的值都在(第二次按button後,有六筆),還是說第二次按button後,第一次的就被取代了,只是ListView裡沒清掉?(以openfiledialog最後選取的為準)

     

    下面是上傳部份的程式碼,目前是以openfiledialo抓取的檔案去做上傳,但這樣只有上傳抓取openfiledialog所選取的部份! 要怎麼修改成上傳ListView裡的項目?能否麻煩大大提示一下

    上傳

    Private Sub btnUpload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpload.Click
            Dim RemoteFile As String
            Dim LocalFile As String
            Dim bReturn As Boolean
            Dim dwInternetFlags As Integer

     

            'If txtLocalFile.Text.Trim() = "" Then
            ' MessageBox.Show("Please enter a local file name.", "FTP", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1)
            'Exit Sub
            'End If

            'If Not File.Exists(txtLocalFile.Text) Then
            ' MessageBox.Show(txtLocalFile.Text & " is not existed.", "FTP", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1)
            ' Exit Sub
            'End If

            If (hConnect <> 0) Then
                Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor

     

                StatusBar1.Panels(0).Text = "Uploading ..."

                ' FTP upload (get)
                If Option1.Checked Then
                    dwInternetFlags = FTP_TRANSFER_TYPE_BINARY
                Else
                    dwInternetFlags = FTP_TRANSFER_TYPE_ASCII
                End If

                For i As Integer = 0 To OpenFileDialog1.FileNames.Length - 1
                    RemoteFile = Path.GetFileName(OpenFileDialog1.FileNames(i))
                    LocalFile = Path.GetFileName(OpenFileDialog1.FileNames(i))
                    bReturn = FtpPutFile(hConnect, LocalFile, RemoteFile, dwInternetFlags, 0)

                    If bReturn Then
                        ' Upload successfully
                        StatusBar1.Panels(0).Text = "Uploaded Successfully."
                        MessageBox.Show("Uploaded Successfully.", "FTP", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1)
                    Else
                        ' Error
                        StatusBar1.Panels(0).Text = "Uploaded Error."
                        MessageBox.Show("Uploaded Error.", "FTP", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
                    End If
                Next


                Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default
            End If
        End Sub

     

     

    2007年7月30日 上午 03:08
  • 不要把簡單線上手冊的瀏覽都丟給網友教你...

    你的問題已經離譜到比作業還簡單了,若再屬於這類細節性的苦工問題,而非方向性的作法問題,就請耐心等其他網友回覆,我不想浪費我的時間在這類問題的細節上。

     

    1. 線上手冊的瀏覽方式:

    ListView.Items 屬性 http://msdn2.microsoft.com/zh-tw/library/system.windows.forms.listview.items(VS.80).aspx

    有說到這個屬性的類別,最下方有超聯結:ListView.ListViewItemCollection

    點下去後,從左方樹狀清單找所有成員,瀏覽內容找你要的東西:

     
    若你每次開啟對話盒完後要清除內容,在第一個 Add 前呼叫 Clear 。

    2. ListView 基本上是為了給使用者看,不是寫程式用,當然可以配合寫程式用,但需結合你的完整邏輯,才能正確無誤的運用,比如說,你的邏輯類似 FlashGet 時,使用者可以一直新增,則可考慮 ListView 在 SubItems 中包含完整路徑欄位,例如檔案總管搜尋的方式,迴圈會變成檢測 ListView.Items.Count 是否為 0 ,配上 ListView.Items.Remove 的方法呼叫。

     

    假設你第一欄僅為檔名,有某一欄為完整路徑,叫做 Path ,一般迴圈範例:

    程式碼

    With ListView

       For Each iItem As ListViewItem In .Items

          bReturn = FtpPutFile(hConnect, iItem.SubItems("Path"), iItem.Text, dwInternetFlags, 0)

       Next

    End With

     

     

    2007年7月30日 上午 03:38
    版主
  • sorry!! 我不是有心故意要問這種問題的!

    我也有試寫ListView裡的迴圈,但抓取ListView.Items()值時,可能抓錯了會有型別 'System.Windows.Forms.ListViewItem' 的值無法轉換成 'String'。的錯誤!!

    因為之前完全沒接觸過vb,vb.net,當然這不是理由!

    不好意思增添大大的困擾,謝謝你的指教!

    2007年7月30日 上午 03:47
  • 錯誤請針對錯誤訊息問題發問,不要退回去問基本東西,基本東西線上手冊都有使用範例。

     

    呼朋引伴去吃飯的時候,會問吃什麼,不會問如何吃,不會要朋友示範吃東西的方法,除非是很稀奇古怪的食材,不知道如何下手不會吃的東西,才會問如何吃。

     

    若是你完全沒接觸過程式設計,請多翻線上手冊,線上手冊也有引導入門開發者的文章及步驟,可依循線上手冊引導而入門。

     

    關於錯誤訊息的提問,請參考本版公告:張貼文章應注意事項及應提供資訊

    錯誤訊息提問要點

    錯誤訊息請明確提供錯誤代碼錯誤訊息內容程式碼錯誤行整行內容該錯誤行各變數內容

    例如在除錯模式下,發生錯誤行會以黃色列反白,此時可以以滑鼠停留在變數上,即會以 Tooltips 方式跳出變數內容,或者將變數反白後,以 Shift+F9 觀看變數內容。有提供變數內容時,至少網友可以企圖重現你的錯誤狀態,進而解決問題。

     

     

    例如你貼出來的訊息:無法轉換為 String ,有可能是設定或取得,而 ListViewItem 只允許 String ,則通常你的問題是你要加入的項目無法轉換為 String ,一般來說,通常是 Nothing 、 vbNullString 或 DBNull 或未知型別的 Object (含陣列),才會造成無法轉換為 String ,若是你會做上面綠色的部份,通常知道變數內容時,你目前的問題就會解決,或是問題會變成 OpenFileDialog.FileNames 為空陣列之類的問題。

    2007年7月30日 上午 04:15
    版主