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的路徑知識等),這將有助於提供更好的答案。 –