如何通过单击按钮查看位于服务器上的文件?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过单击按钮查看位于服务器上的文件?相关的知识,希望对你有一定的参考价值。
我点击一个按钮(按钮位于192.xxx.x.xxx Profile Details页面)传递给angularJS控制器文件,它调用API
$scope.docView = function () {
Method.getbyId("api call",docId).then(function(response) {
if (response.data.message != null)
window.open('//'+response.data.message);
else
alert("File Not Found !");
}).catch(function (data) {
console.log("Unknown Error");
});
}
}
API是:
[Route("api call")]
[HttpGet]
public IHttpActionResult ViewDocument (Guid? docId)
{
/*background work*/
response.Message = filePath;
}
}
catch (Exception ex)
{
Utils.Write(ex);
}
return Ok(response);
}
在response.data.message中,服务器上的文件路径(192.xxx.x.xxx folder filename)即将到来,它将通过window.open()打开该文件。但是在URL中,文件夹的整个路径是可见的,这将成为安全漏洞。因此,我想在同一控制器中“在新视图中显示文件”,该控制器将在新选项卡中打开文件。网址应该是(192.xxx.x.xxx Profile Details?docid = xxxxxxxxxxxxxxxxx)。
答案
您正在寻找的内容,您可以在Google上快速搜索:“从ASP.NET Web API方法下载文件”。
编辑:
HttpResponseMessage response = new HttpResponseMessage();
response.StatusCode = HttpStatusCode.OK;
response.Content = new StreamContent(result);
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue(System.Net.Mime.DispositionTypeNames.Inline)
{
FileName = "foo.pdf"
};
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
您需要根据实际文件类型更改Content-Type。此外,如果文件在浏览器中实际可见,则取决于浏览器是否能够这样做。
以上是关于如何通过单击按钮查看位于服务器上的文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过单击适配器类中代码的项目中的删除按钮来删除列表视图中的项目后重新加载片段?