开发者

How can I show image file from Amazon S3 in asp.net mvc?

I need to show image(thumbnail) in view page using controller/action.(like:开发者_运维百科 /Image/Thumbnail) I can send image file that is stored locally by calling the method in controller.

// sample code
public FileResult Thumbnail()
{
    // get image
    Stream outFile = System.IO.File.Open("c:\\test.jpg", FileMode.Open);

    // send image
    return File(outFile, "image/jpeg");
}

How can I send image file that is stored in Amazon S3 ?

Can I use Amazon S3 URL in the above method to return image ? --> http://bucketname.s3.amazonaws.com/test.jpg?AWSAccessKeyId=AKIAIDLH65EJ6LSWERDF&Expires=1266497098&Signature=lopDEDErjNLy2uz6X6QCNlIjkpB0%3D

Thanks


You can return a redirect result:

public ActionResult Thumbnail()
{
    return Redirect("http://domain.com/test.jpg");
}

If the url points at the image file then it will work. Of course you shouldn't present the url of this action to user but use it in some other view as <img> src attribute value:

<img src="<%= Url.Action("Thumbnail", "ControllerName") %>" />


Try loading the image with a WebClient:

WebClient wClient = new WebClient();
Stream stream = new MemoryStream(wClient.DownloadData('http://....jpg'));

return File(stream, "image/jpg");


you can make a webrequest to get the stream

public FileResult Thumbnail()
    {
        // get image
        HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(@"http://bucketname.s3.amazonaws.com/test.jpg?AWSAccessKeyId=AKIAIDLH65EJ6LSWERDF&Expires=1266497098&Signature=lopDEDErjNLy2uz6X6QCNlIjkpB0%3D");
        WebResponse myResp = myReq.GetResponse();

        Stream outFile = myResp.GetResponseStream();

        // send image
        return File(outFile, "image/jpeg");
    }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜