2010-02-18 17 views
5

Ben kontrolör/eylemini kullanarak görünüm sayfasında görüntüyü (küçük resim) göstermek gerekir (örnek:/Resim/Küçük Resim). ben denetleyicisi yöntemini çağırarak yerel olarak depolanır görüntü dosyası gönderebilirsiniz.Asp.net mvc'de Amazon S3'den nasıl görüntü dosyası gösterebilirim?

// 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'te depolanan görüntü dosyasını nasıl gönderebilirim?

Görüntüyü döndürmek için yukarıdaki yöntemde Amazon S3 URL kullanabilir miyim? görüntü dosyasına URL noktaları o zaman çalışacak olursa

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

: -> http://bucketname.s3.amazonaws.com/test.jpg?AWSAccessKeyId=AKIAIDLH65EJ6LSWERDF&Expires=1266497098&Signature=lopDEDErjNLy2uz6X6QCNlIjkpB0%3D

Teşekkür

cevap

3

Bir yönlendirme sonucu döndürebilir. Tabii ki kullanıcıya bu eylemin url sunmak ancak <img> src özellik değeri olarak diğer bazı görünümünde kullanmamalısınız:

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

Akışı almak için bir web adresi hazırlayabilir. Yanıtın tamamı için teşekkürler :-) Bu çözüm benim için çalışır. – user240181

+0

-1 Bir görüntü isteği için yönlendirme döndürmek kötü bir uygulamadır. Müşteriye başka bir * istekte bulunmasını söylüyorsun. Artan dönüş süresi. –

+0

@FreshCode - yeterince adil. Bir alternatif biliyor musunuz? – ctrlplusb

1

bir WebClient'a ile resim yükleme deneyin:

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

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

Bu görüntüleri kopyalayarak bant genişliği verecekseniz, amazon'un barındırma amacını aşmaz mıydı? – drake7707

+0

Evet, ancak resimleri anında yeniden boyutlandırmak istiyorum. –

1

seni

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"); 
    } 
+1

Lanet, yavaş yavaş yolu :) – Pharabus

İlgili konular