spa*_*reo 30 asp.net rest asp.net-web-api
我想尝试使用Web API进行休息调用,但我希望响应是存储在数据库中的实际二进制映像,而不是JSON base64编码的字符串.有人对此有一些指示吗?
更新 - 这是我最终实现的:
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new StreamContent(new MemoryStream(profile.Avatar));
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
result.Content.Headers.ContentDisposition.FileName = "avatar.png";
return result;
Run Code Online (Sandbox Code Playgroud)
Mik*_*son 29
您可以将响应内容设置为StreamContent对象:
var fileStream = new FileStream(path, FileMode.Open);
var resp = new HttpResponseMessage()
{
Content = new StreamContent(fileStream)
};
// Find the MIME type
string mimeType = _extensions[Path.GetExtension(path)];
resp.Content.Headers.ContentType = new MediaTypeHeaderValue(mimeType);
Run Code Online (Sandbox Code Playgroud)
vbu*_*ger 18
虽然这已被标记为已回答,但这并不是我想要的,所以我一直在寻找.现在我已经弄明白了,这就是我所拥有的:
public FileContentResult GetFile(string id)
{
byte[] fileContents;
using (MemoryStream memoryStream = new MemoryStream())
{
using (Bitmap image = new Bitmap(WebRequest.Create(myURL).GetResponse().GetResponseStream()))
image.Save(memoryStream, ImageFormat.Jpeg);
fileContents = memoryStream.ToArray();
}
return new FileContentResult(fileContents, "image/jpg");
}
Run Code Online (Sandbox Code Playgroud)
当然,这是通过URL获取图像.如果你只是想从文件服务器上取下一个图像,我想你会替换这一行:
using (Bitmap image = new Bitmap(WebRequest.Create(myURL).GetResponse().GetResponseStream()))
Run Code Online (Sandbox Code Playgroud)
有了这个:
using (Bitmap image = new Bitmap(myFilePath))
Run Code Online (Sandbox Code Playgroud)
编辑:没关系,这是常规的MVC.对于Web API,我有这个:
public HttpResponseMessage Get(string id)
{
string fileName = string.Format("{0}.jpg", id);
if (!FileProvider.Exists(fileName))
throw new HttpResponseException(HttpStatusCode.NotFound);
FileStream fileStream = FileProvider.Open(fileName);
HttpResponseMessage response = new HttpResponseMessage { Content = new StreamContent(fileStream) };
response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpg");
response.Content.Headers.ContentLength = FileProvider.GetLength(fileName);
return response;
}
Run Code Online (Sandbox Code Playgroud)
这与OP有很相似之处.
归档时间: |
|
查看次数: |
42706 次 |
最近记录: |