0
我目前在“下载文件”实施使用Web API的工作2.允许URI的Web API调用
然而,作为可下载不存储在数据库中的文件的完整的文件路径,我我传入完整的文件路径作为标识参数。
看来这种方法的问题在于filePath包含对URI无效的字符......有没有人有任何建议来解决这个问题或替代方法?
下载文件的方法:
[HttpGet]
[Route("Files/{*filePath}")]
public HttpResponseMessage Get([FromUri]string filePath)
{
try
{
var file = new FileInfo(filePath);
byte[] bytes = System.IO.File.ReadAllBytes(filePath);
var result = Request.CreateResponse(HttpStatusCode.OK);
result.Content = new ByteArrayContent(bytes);
result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
result.Content.Headers.ContentDisposition.FileName = file.Name + file.Extension;
return result;
}
catch(Exception ex)
{
return Request.CreateResponse(HttpStatusCode.InternalServerError, ex);
}
}
感谢您的详细回复,Chris!你在那里展示的一些很好/有用的观点。您的建议的一个问题是保持数据库最新...如果新文件被添加到源文件夹,移动或删除,数据库将不得不手动更新... – Tomuke
根据API的性质和数量客户可能是一件好事 - 例如如果您有50个API客户端并且您移动了一个文件,您是否愿意更新50个客户端或一个数据库条目?如果你可以用更多关于客户端 - 服务器关系的信息来更新你的问题(有多少客户端,他们如何获得放入api URI的路径知识等),这将有助于提供更好的答案。 –