我有一些文件在服务器上,可以通过以下格式的URL访问:http://地址/Attachments.aspx?id=GUID。
我可以访问GUID,并且需要能够将多个文件下载到同一个文件夹中。如果你在浏览器中输入该URL,你将下载文件并保留原始文件名。
我想在C#中复制此行为。我尝试使用WebClient类的DownloadFile方法,但是您必须指定新文件名。更糟糕的是,DownloadFile会覆盖现有文件。我知道我可以为每个文件生成唯一的名称,但我真的想要原始名称。
是否可以下载文件并保留原始文件名?
更新:
使用下面的绝妙答案来使用WebReqest类,我得出了以下完美的结果:
我可以访问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));
}
刚刚我只需要进行一些字符串操作就可以得到实际文件名了。我非常兴奋,感谢大家!
System.Net.Mime.ContentDisposition
)。 - Daniel Lo Nigro