我遇到一个文件无法下载的问题,即使它显示为已完成。
该文件未显示在应该下载到的位置。
这是我的代码:
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if(e.ColumnIndex == 2)
{
int rowIndex = e.RowIndex;
DataGridViewRow row = dataGridView1.Rows[rowIndex];
string value1 = row.Cells[2].Value.ToString();
wc.DownloadFileCompleted += new AsyncCompletedEventHandler(AtlasCompleted);
Uri fileUrl = new Uri(value1);
Beta = fileUrl;
//Console.WriteLine(FormPopup.Variables.Location1.Length);
if (FormPopup.Variables.Location1 != null && FormPopup.Variables.Location1.Length >= 5)
{
Console.WriteLine(FormPopup.Variables.Location1);
Console.WriteLine(fileUrl);
wc.DownloadFileAsync(fileUrl, FormPopup.Variables.Location1);
//MessageBox.Show(fileUrl.ToString() + " " + FormPopup.Variables.Location1);
}
else
{
MessageBox.Show("Error: No file location specified.");
FormPopup form = new FormPopup();
form.Show(this);
}
}
}
private void AtlasCompleted(object sender, AsyncCompletedEventArgs e)
{
MessageBox.Show(Beta.ToString() + " " + FormPopup.Variables.Location1);
}
该文件应该下载,但不会下载或出现在指定的位置。
如果有人能提供帮助那就太棒了,那真让我感到困惑。
感谢您的回复:D
答案 0 :(得分:0)
WebClient代码很好,它应该没有任何问题下载文件。只需确保您的文件Uri正确(将uri粘贴到浏览器中并查看其正确)。在本地系统上保存文件的路径应该是有效的(路径中包含的文件夹必须存在),并且常规用户必须具有写入权限。
要进一步测试,请先使用硬编码值:
wc.DownloadFileAsync("File Uril","File path at local system");
示例:
wc.DownloadFileAsync(new Uri("http://example.com/myfile.txt"), @"d:\myfile.txt");
仔细检查Uri和位置的变量,因为除了无效参数之外没有任何魔法会阻止下载。
此外,添加一些错误记录/异常处理,以便它告诉您发生了什么。
private void AtlasCompleted(object sender, AsyncCompletedEventArgs e)
{
if(e.Error !=null)
Console.WriteLine(e.Error.Message);
else
Console.WriteLine("Completed");
MessageBox.Show(Beta.ToString() + " " + FormPopup.Variables.Location1);
}