返回图像网址作为web api 2查询的结果

时间:2015-05-23 08:31:38

标签: c# windows-phone-8 asp.net-web-api2

编辑: 我用控制器更新以获取流资源,但是一些如何仍然不起作用

.main

它返回一个字符串,而不是resoure文件

enter image description here

当我调试时,“url”变量是

public class ResourcesController : Controller
{
    public string Directory = @"D:\Desktop\MusicDatabase\Image\";

    [HttpGet]
    [Route("Image/{type}/{id}")]
    public HttpResponseMessage Image(string type, string id)
    {
        HttpResponseMessage httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK);
        var url = Path.Combine(Directory, type, id + ".jpg");
        byte[] fileData = System.IO.File.ReadAllBytes(url);
        MemoryStream ms = new MemoryStream(fileData);
        httpResponseMessage.Content = new StreamContent(ms);
        httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpg");
        return httpResponseMessage;
    }     
}

旧:

我有2个项目:1个服务器的web api2,1个用于客户端的WP8应用程序。

服务器包含db,其中我有链接到外部文件资源

e.x带有IMAGE列的歌曲表,我将此图片存储在桌面

"D:\\Desktop\\MusicDatabase\\Image\\song\\2.jpg"

在我的数据库中,我只通过其索引存储“IMAGE”列(如“Song \ 1.jpg”),然后当我有一些查询要切断时,我会返回完整的URL

public partial class Song
{    
    public int Id { get; set; }        
    public string NAME { get; set; }

    private string _IMAGE;
    public string IMAGE 
    { 
        get
        {
            return Helper.Helper.ConcatDirectory(_IMAGE);
        }
        set
        {
            _IMAGE = value;
        }
    }

当我在网络浏览器中尝试查询时,此网址将返回存储在我的电脑中的文件

enter image description here

但是我的WP8应用程序无法显示此图像(使用模拟器进行调试)。 虽然我不想将这个资源存储在我的项目中,但是还是要在这里返回这些图像吗? (稍后会有任何不同的文件类型,如歌曲,视频...)

1 个答案:

答案 0 :(得分:0)

请替换

httpResponseMessage.Content = new StreamContent(ms);

httpResponseMessage.Content = new ByteArrayContent(ms);

编辑:

我真的认为您应该尝试了解其他SO用户的以下建议:

1)在ASP.NET WebAPI中处理静态图像:https://stackoverflow.com/a/12559507/2310818