2010-08-27 65 views
19

Tôi cần gửi phản hồi html tới trình duyệt chứa png 1920x1080. Đó là ảnh chụp màn hình được thực hiện bởi truy vấn html.Làm thế nào để có được giới hạn 32k IE8 trên dữ liệu: uri trên mã hóa base64?

Tôi mã hóa hình ảnh trong base64 và gửi nó được nhúng dưới dạng loại nội dung văn bản/html. Một cái gì đó đơn giản như:

<HTML><HEAD>Whatever</HEAD><BODY><img src="data:image/png;base64,data"/></BODY></HTML> 

Nó hoạt động tốt trên FF và Chrome, vấn đề là tôi cần hỗ trợ IE8. IE8 là một giới hạn về độ dài của dữ liệu: uri.

Nếu tôi nén hình ảnh để mã hóa png dưới 32k (khoảng 600x500), tôi sẽ mất quá nhiều thông tin.

Điều gì sẽ là công việc dễ dàng nhất xung quanh cho vấn đề này? (Tôi không có quyền truy cập vào máy chủ để lưu trữ hình ảnh hoặc như vậy)

+2

Bất kỳ lý do cụ thể tại sao bạn muốn gửi một hình ảnh 1920x1080 qua 'src =" data: '? – NullUserException

+0

Điều gì sẽ là lựa chọn khác của tôi? – Martin

+5

Bạn không cần hỗ trợ IE7 và IE6? Lucky Guy. – Gordon

Trả lời

4

Bạn luôn có thể tách hình ảnh thành 4 (hoặc nhiều hơn) và mã hóa từng phần riêng biệt.

+0

bạn có thể vui lòng cung cấp liên kết đến ví dụ, cách thực hiện điều đó không? – Hemc

+0

Có @cobbal, bạn có thể đăng một ví dụ về cách làm điều đó không? – SexyBeast

+2

Tôi giả sử cobbal có nghĩa là bạn có thể hiển thị 4 hình ảnh cạnh nhau, giống như tranh mosaic, sẽ xuất hiện dưới dạng một hình ảnh lớn. Điều này có thể được thực hiện bằng cách tách hình ảnh nguồn thành 4 bằng cách sử dụng bất kỳ trình chỉnh sửa hình ảnh nào, mã hóa từng phần riêng biệt, sau đó đặt riêng chúng trong HTML bằng cách sử dụng CSS để định vị chúng một cách chính xác. –

0

Bạn không thể lưu hình ảnh ở đâu đó, trả về đường dẫn của nó, và sau đó thay đổi src thành đường dẫn bạn vừa tạo?

+0

Không, tôi không thể lưu trữ hình ảnh ở nơi khác hoặc làm cho đường dẫn của nó có sẵn cho yêu cầu bên ngoài. – Martin

17

Cuối cùng, chúng tôi đã giảm hỗ trợ IE8.

Tôi thật may mắn vì nó chỉ dành cho mục đích gỡ lỗi nội bộ.

Vấn đề vẫn tồn tại. Hy vọng rằng IE9 sẽ không có dữ liệu: giới hạn uri.

+17

Giải pháp yêu thích của tôi về tất cả –

+0

tôi không thể ngừng cười lúc này =))))))))))))) – mhesabi

+0

Tôi không thể thả hỗ trợ ... Tôi không thể cười ... u_u ') và điều này là năm 2017 !!! –

0

Dữ liệu được mã hóa Base64 URI hoạt động tốt trong IE có phiên bản lớn hơn hoặc bằng 9. Vì không có giới hạn URI dữ liệu cho IE 9. Ngoài ra tôi đã cố khắc phục sự cố IE 8 này. Nhưng tôi không thể khắc phục vấn đề này. Đối với công việc xung quanh, lưu trữ hình ảnh ở một nơi nào đó bên trong ứng dụng của bạn & truy xuất lại từ ứng dụng bất cứ khi nào hiển thị nó.

Trong quan điểm Rails: (hỗ trợ nếu IE> = 9)

<b><%= ('&lt;img src="data:image/jpg;base64,%s">' % Base64.encode64(@chart.to_blob)).html_safe %></b> 

Trong quan điểm Rails: (Hỗ trợ tất cả các trình duyệt)

<b><%= image_tag @chart+".png" %></b> 
Các vấn đề liên quan