Я должен показать изображение (миниатюра) в поле зрения страница с помощью контроллера/действия. (как:/Image/Thumbnail) я могу отправить файл изображения, который хранится локально путем вызова метода в контроллере.
// 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");
}
Как я могу отправить файл изображения, который хранится в Amazon S3?
Я могу использовать URL Amazon S3 в вышеупомянутом методе для возврата изображения?-> http://bucketname.s3.amazonaws.com/test.jpg?AWSAccessKeyId=AKIAIDLH65EJ6LSWERDF&Expires=1266497098&Signature=lopDEDErjNLy2uz6X6QCNlIjkpB0%3D
Спасибо
Вы можете вернуть результат перенаправления:
public ActionResult Thumbnail()
{
return Redirect("http://domain.com/test.jpg");
}
Если URL-адрес указывает на файл изображения, он будет работать. Конечно, вы не должны предоставлять пользователю URL-адрес этого действия, а использовать его в другом представлении как
значение атрибута src:
<img src="<%= Url.Action("Thumbnail", "ControllerName") %>" />
Попробуйте загрузить изображение с помощью WebClient:
WebClient wClient = new WebClient();
Stream stream = new MemoryStream(wClient.DownloadData('http://....jpg'));
return File(stream, "image/jpg");
вы можете сделать webrequest для получения потока
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");
}