【问题标题】:Open file and save打开文件并保存
【发布时间】:2009-11-20 15:32:48
【问题描述】:

我想下载一个文件并将其保存在本地,而没有任何弹出窗口供用户选择位置,因为它是预定义的。文件格式很可能是pdf。下载文件路径将是一个 url,我想将其保存在本地。我要这样上班吗:

string fileName = "http://mail.example.com/download.asp?saveFile=example.pdf";  

BinaryReader binReader = new BinaryReader(File.Open(fileName, FileMode.Open));  

string path = "C:\\Domains\\shared.example.com\\pdf\\example.pdf";  

using (BinaryWriter Writer = new BinaryWriter(new FileStream(path,FileMode.OpenOrCreate)))  
{  
    Writer.Write(binReader);  
}

【问题讨论】:

  • 它看起来像 C#/.NET 但你应该指定语言/框架...
  • 考虑使用更好的名称。 binReader -> binWriter 而不是 Writer。 fileName 是一个 url(或路径)。我建议,String downloadPath,savePath
  • 我确实遵循描述性命名约定,这只是一个草率的例子,我很抱歉。

标签: c# webclient download


【解决方案1】:

这更容易:

WebClient wc = new WebClient();
wc.DownloadFile(filename, path);

【讨论】:

    【解决方案2】:

    不,那样不行……您必须使用WebRequest-Class 来获取文件。

    鲍比

    【讨论】:

      【解决方案3】:

      使用

      new WebClient().DownloadFile("http://url/name.pdf", @"C:\locationOnFilesystem.pdf");
      

      您可以使用DownloadFileAsync 来执行此操作而不会阻塞您的主线程。将事件处理程序附加到 WebClient 以报告进度,例如 DownloadProgressChangedDownloadFileCompleted

      【讨论】:

        【解决方案4】:

        您应该标记您使用的语言。

        另外,我不相信浏览器会在不先询问用户的情况下下载文件,因为这是一个安全问题。您可以在人们不知情的情况下轻松地将病毒投放到人们的计算机上。

        【讨论】:

        • 其实他从来没有提到过使用浏览器。您可以在用户不知情的情况下从网络下载任何内容,只要没有任何障碍(防火墙或病毒扫描程序)。
        • 我会在下一篇文章中记住这一点。 自我说明以避免混淆,更具描述性
        猜你喜欢
        • 2016-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多