通过jquery从c#控制器获取文件url
本文关键字:获取 文件 url 控制器 jquery 通过 | 更新日期: 2023-09-27 18:08:51
我有一个c#控制器,它返回系统的状态文件。它提示用户打开或下载文件。控制器的返回类型实际上是System.Net.Http.HttpResponseMessage。
我这样设置路由:/api/logging/status/{reqID}
如果我在我的web浏览器中直接进入路由,http://mysite//api/logging/status/12345678,它工作正常。
我如何通过jquery获得文件的URL,以便我可以将该URL放在像
这样的achor标签中<a href="http://path.to.my.status.file/status.txt">Download Status</a>
这是控制器:
[Route("/api/logging/status/{reqID}")]
public IHttpActionResult GetStatus(Int32 reqID)
{
Stream stream;
stream = new MemoryStream();
var reqStatus = serializer.SerializeToString(req);
var bytes = System.Text.Encoding.UTF8.GetBytes(reqStatus);
stream.Write(bytes, 0, bytes.Length);
stream.Seek(0, SeekOrigin.Begin);
}
var response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StreamContent(stream);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
response.Content.Headers.Add("Content-Disposition", String.Format("attachment; filename='"{0}'"", "status.txt"));
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
return ResponseMessage(response);
}
我错过了什么吗?
谢谢!
您是否已经尝试了以下操作?
$.get('/api/logging/status/12345678', function (data) {
console.log(data);
});
@999cm999,
在我看来,你需要另一种服务方法来提供txt文件的路径。您只有一个将文件本身作为下载提供的方法。这就是浏览器示例的工作方式。
但是,如果您想在HTML页面的锚标记中插入txt文件(http://path.to.my.status.file/status.txt)的路径,那么您所拥有的方法就不适合了。创建另一个以字符串形式返回文件路径的方法。然后你可以使用jQuery或你喜欢的JS方法将它放到超链接元素的HREF属性中。
让我知道你的发现。