文件没有下载,即使它说下载了

File not downloading even though it says it did

我遇到一个文件无法下载的问题,即使它显示为已完成。

该文件没有显示在它应该下载到的位置。

这是我的代码:

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

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 和位置变量,因为除了无效参数外,没有任何魔法可以阻止下载。

此外,添加一些错误 logging/Exception 处理,以便它告诉您发生了什么。

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);
}