我在服务器上有可以从格式如下的 URL 访问的文件:http://address/Attachments.aspx?id=GUID
我可以访问 GUID,并且需要能够将多个文件下载到同一个文件夹。
如果您获取该 URL 并将其放入浏览器中,您将下载该文件并且它将具有原始文件名。
我想在 C# 中复制这种行为。我尝试过使用 WebClient 类的 DownloadFile 方法,但是你必须指定一个新的文件名。更糟糕的是,DownloadFile 会覆盖现有文件。我知道我可以为每个文件生成一个唯一的名称,但我真的很喜欢原始文件。
是否可以下载保留原始文件名的文件?
更新:
使用下面的奇妙答案来使用 WebReqest 类,我想出了以下完美的方法:
public override void OnAttachmentSaved(string filePath)
{
var webClient = new WebClient();
//get file name
var request = WebRequest.Create(filePath);
var response = request.GetResponse();
var contentDisposition = response.Headers["Content-Disposition"];
const string contentFileNamePortion = "filename=";
var fileNameStartIndex = contentDisposition.IndexOf(contentFileNamePortion, StringComparison.InvariantCulture) + contentFileNamePortion.Length;
var originalFileNameLength = contentDisposition.Length - fileNameStartIndex;
var originalFileName = contentDisposition.Substring(fileNameStartIndex, originalFileNameLength);
//download file
webClient.UseDefaultCredentials = true;
webClient.DownloadFile(filePath, String.Format(@"C:\inetpub\Attachments Test\{0}", originalFileName));
}
只需进行一些字符串操作即可获得实际的文件名。我太激动了。谢谢大家!