2009-10-02 34 views
5

đang cố gắng hiển thị hình ảnh trong "toolStrip" i C# từ weburl. Đang sử dụng tole sau đây để có được hình ảnhTải hình ảnh trong C# từ URL web

WebRequest requestPic5 = WebRequest.Create(icon_path); 
         requestPic5.Timeout = 5000; 
         WebResponse responsePic5 = null; 
         Image Myimg5 = null; 

if (requestPic5 != null) 
    { 
     responsePic5 = requestPic5.GetResponse(); 
     if (responsePic5 != null) 
     { 
      Myimg5 = Image.FromStream(responsePic5.GetResponseStream()); 
      } 
    } 

thất bại của mình khi Myimg5 = Image.FromStream(responsePic5.GetResponseStream()); ném một ngoại lệ nhưng hình ảnh vẫn còn đó trong url

Nhưng tiếc là hầu hết thời gian của nó không tải đúng và đôi khi ném một Lỗi 404

+0

Nội dung thô của luồng trông như thế nào? Chúng được trang trí bằng HTML hay gì đó? –

+0

Cảm ơn Jacob, dữ liệu tôi cần truyền là tệp hình ảnh png. – raki

+0

Tôi đã nghĩ rằng bạn có thể xuất luồng vào cửa sổ gỡ lỗi và xem liệu có các thẻ xung quanh byte hình ảnh của bạn hay không. Nhưng, tôi chỉ thử nghiệm nó và mọi thứ đều tốt cho tôi. Bạn có chắc chắn rằng hình ảnh có sẵn cho bạn thông qua yêu cầu trên web không? Bạn có thể thử hình ảnh này không? http://sstatic.net/so/img/logo.png (biểu tượng xếp chồng lên nhau) và xem mọi thứ có hoạt động không? –

Trả lời

6

Luồng phản hồi có các nội dung khác mà bạn không nhất thiết muốn. Bạn thực sự chỉ muốn các dữ liệu thô của tập tin imgage, vì vậy bạn có thể sử dụng:

new MemoryStream(new WebClient().DownloadData("http://address/file.ico"));

0

Có lẽ trang web được bảo vệ chống lại liên kết nóng. Vì hình ảnh có kích thước lớn so với các trang html và trang web trả tiền cho băng thông đã sử dụng của họ, đây là cơ chế bảo vệ trang web khỏi bị đánh cắp bsndwidth, bởi các trang web khác.

Ý tưởng này đang sử dụng một số loại xác thực và đảm bảo người dùng thực đang yêu cầu hình ảnh. Việc này thường được thực hiện bởi các cookie trên trang chứa hình ảnh. Bạn cần lấy các cookie đó và gửi chúng theo yêu cầu của bạn. Bạn cần thêm CookieContainer vào yêu cầu của mình, sau đó yêu cầu trang hình ảnh cư trú và cuối cùng truy xuất hình ảnh (sử dụng cùng một yêu cầu cho tất cả các bước, cookie sẽ được thêm và sử dụng tự động).

Các vấn đề liên quan