【发布时间】:2017-07-07 05:19:36
【问题描述】:
我正在使用以下代码将文件复制到网络位置并将文件信息存储在访问数据库中。
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_@docid 参数
【问题讨论】:
-
您可能还需要一些错误处理来处理无法正确复制的问题。
-
我实际上会做一个文件重命名。唯一的风险是检查现有文件,如果存在副本,您将遇到与重命名相同的问题,您可以使用 File.exists() 进行检查。文件重命名线程:stackoverflow.com/questions/19150333/…
-
File.Copy 应该使用正确的名称进行复制,而不是在之后重命名。您可以查看文件名是否存在并为其附加后缀。或者只是将时间戳附加到所有文件,这样你甚至不需要查看是否有重复。你设置了变量 fileLocation 但你没有第二次使用它,这让我很困扰!
-
@the_lotus,您可能需要考虑将该评论编辑为 FINAL 而不是正确的。