我正在尝试将文件(.docx,.pdf,.pptx等)从源文件夹(在服务器上)复制到目标文件夹(在客户端上)。
用户可以选择他想要下载的文件列表中的哪一个。他选择文件然后将其下载(将其复制到他的计算机)到目标路径
dstnLocation= @"C:\Fldr\Docs;
我的代码:
string sourceLocation = textBox2.Text;
string dstnLocation = @"C:\Fldr\Docs";
System.IO.FileInfo file = new System.IO.FileInfo(dstnLocation);
file.Directory.Create();
System.IO.File.Copy(sourceLocation, dstnLocation,true);
MessageBox.Show("Download Complete");
问题是它创建了一个文件作为“Docs”(其中一个必须使用open with打开文件),如果我没有错,那么因为目的地路径。有人可以告诉我我做错了什么。 通过数据库检索源路径!
答案 0 :(得分:2)
你需要连接,否则你的目的地位置就是文件夹而不是文件路径目的地
这样做
var destFile = string.Format(@"{0}\{1}", dstnLocation, Path.GetFileName(sourceLocation));
然后复制
所以代码变成
string sourceLocation = textBox2.Text;
string dstnLocation = string.Format(@"C:\Fldr\Docs\{0}", Path.GetFileName(sourceLocation);
if (! System.IO.Directory.Exists(dstnLocation))
{
System.IO.Directory.CreateDirectory(dstnLocation);
}
System.IO.File.Copy(sourceLocation, dstnLocation,true);
MessageBox.Show("Download Complete");
答案 1 :(得分:0)
您正在错误地创建文件名:
string dstnLocation = @"C:\Fldr\Docs";
System.IO.FileInfo file = new System.IO.FileInfo(dstnLocation);
这会创建一个名为"C:\Fldr\Docs"
的文件,例如,如果我没有记错的话,您想要的是"C:\Fldr\Docs\myfilename.docx"
吗?
请改为尝试:
var filename = Path.GetFileName(sourceLocation);
string dstnLocation = Path.Combine(@"C:\Fldr\Docs", filename);
答案 2 :(得分:0)
这里的问题是目的地需要一个“输出”文件名。
这个问题在于这行代码
System.IO.File.Copy(sourceLocation, dstnLocation,true);
dstnLocation需要与输出文件名连接,例如:
System.IO.File.Copy(sourceLocation, Path.Combine(dstnLocation,"Database.dbs"),true);