Tôi đang làm việc trên một trang web cho phép người dùng chỉnh sửa ảnh (trong trình duyệt) và sau đó tải chúng lên. Để chỉnh sửa hình ảnh trong trình duyệt, tôi sử dụng một số thư viện JavaScript hoạt động với hình ảnh trong base64. Do đó, để POST hình ảnh lên máy chủ của tôi, không thể sử dụng biểu mẫu đơn giản với đầu vào tệp. Giá trị của đầu vào bị ẩn được đặt thành chuỗi base64 của hình ảnh đã chỉnh sửa và đã được POST. Vui lòng xem ví dụ sau, ví dụ ngắn.BẬT dữ liệu base64 JavaScript/jQuery
Rõ ràng, điều này được rất nhiều tước xuống, nhưng nó chứa các vấn đề tôi đang chạy vào. Trong POSTING một GIF động 3MB, mất 6,5 phút. Trong thời gian đó, máy tính của tôi gần như hoàn toàn bị đóng băng/không phản hồi. (Lưu ý: Điều này hoạt động hoàn toàn hoàn toàn đối với hình ảnh nhỏ)
Có thể là sự cố hệ điều hành/trình duyệt, (Google Chrome mới nhất trên Ubuntu) nhưng tôi nghi ngờ điều đó. Nếu tôi đặt đầu vào tệp đó bên trong biểu mẫu và xóa dữ liệu base64-ing, (tức là - một POST chuẩn của một tệp) nó sẽ diễn ra trong khoảng một giây.
So sánh 6,5 phút đến 1 giây. Tôi phải làm điều gì đó sai. Tôi làm gì sai ở đây? Tôi nên làm gì thay vào đó? Tôi khá mới để phát triển web, vì vậy tôi là một chút trong bóng tối. Tôi biết rằng base64 có một số thứ như tăng kích thước 1.3x, nhưng rõ ràng thời gian tải lên ở đây không phải là tỷ lệ với 1.3x. Tôi đã thực hiện một chút về console.logging và
var base64 = reader.result;
mất khoảng một giây. Vì vậy, tôi không nghĩ rằng nút cổ chai là có. Nút cổ chai phải được tải lên. Nhưng tại sao? Tại sao đầu vào tệp biểu mẫu do đó nhanh hơn nhiều so với đầu vào ẩn biểu mẫu với base64?
Tôi xin lỗi vì bài đăng dài, nhưng một lần nữa, tôi mới phát triển web và không thực sự hiểu vấn đề của mình, vì vậy khó có thể súc tích trong khi nhận tất cả thông tin.
Cảm ơn
máy chủ phụ trợ của bạn là gì? – arb
-A url dữ liệu không giống với base64 ... Những ngày này URL dữ liệu chủ yếu là UUID, không phải toàn bộ base64 body + meta data. Tải lên UUID đó là vô dụng.- Nếu bạn thực sự muốn nói đến base64 trong JS, hãy sử dụng ['btoa()'] (https://developer.mozilla.org/en-US/docs/Web/API/window.btoa). – Rudie
Máy chủ phụ trợ của tôi? Đó là PHP. (Đó là những gì bạn đang yêu cầu?) –