2017-02-17 46 views
0

我正在使用下面的代碼將文件複製到網絡位置並將文件信息存儲在訪問數據庫中。保存到位置時重命名文件

Dim SqlString1 As String = "INSERT INTO document (incidentid, documentno, documentname, documentpath) VALUES (@incid, @docid, @FileName, @FilePath)" 
    Using conn As New OleDbConnection(ConnString) 
     conn.Open() 
     If Me.TextBox1.Text <> "" Then 
      'THIS WILL SAVE THE FILE TO A LOCATION  
      Dim fileLocation As String = OpenFileDialog1.FileName 
      File.Copy(fileLocation, Path.Combine("\\10.1.10.5\NonConformance\Document\", Path.GetFileName(fileLocation)), True) 
      'THIS WILL SAVE A FILE PATH TO THE ACCESS DB 
      Using cmd As New OleDbCommand(SqlString1, conn) 
       'cmd.CommandType = CommandType.Text 
       cmd.Parameters.AddWithValue("@incid", doc1.Text) 
       cmd.Parameters.AddWithValue("@docid", doc2.Text) 
       cmd.Parameters.AddWithValue("@FileName", Path.GetFileName(Me.OpenFileDialog1.FileName)) 
       cmd.Parameters.AddWithValue("@FilePath", "\\10.1.10.5\NonConformance\Document\" & Path.GetFileName(Me.OpenFileDialog1.FileName)) 
       cmd.ExecuteNonQuery() 
       conn.Close() 
      End Using 
     End If 
     conn.Close() 
    End Using 

我很擔心,如果用戶上傳一個文件相同的文件名作爲一個已經在文件夾中它會試圖檢索在稍後的日期信息時,會導致問題。

所以任何人都可以告訴我如何將文件複製到網絡位置時重命名。理想情況下,我想重新命名它是@ incid_ @文檔ID參數

+0

您可能還需要一些錯誤處理,以處理複製不當的錯誤。 –

+0

我其實會做文件重命名。唯一的風險是檢查一個現有的文件,如果它存在,並且您可以使用File.exists()進行檢查,那麼您將具有與重命名相同的問題。線程上的文件重命名:http://stackoverflow.com/questions/19150333/how-to-rename-a-file-in-net – djangojazz

+1

File.Copy應複製一個正確的名稱,而不是重命名後。你可以看看文件名是否存在,並附加一個後綴。或者只是將時間戳附加到所有文件,這樣你甚至不需要查看是否有重複。它讓我感到困擾,你設置了變量fileLocation,但你不會再次使用它! –

回答

0

我結束了改變

Path.GetFileName(fileLocation)) 

元素讀

Path.GetFileName("INC" & Label6.Text & "DOC" & doc2.Text & ".pdf") 

這將解決這個問題對我來說,謝謝爲答覆。