2011-08-27 30 views
7

Vì vậy, tôi đang làm việc trên một ứng dụng web mà người dùng sẽ cần phải:Javascript: qua trình duyệt tập tin serverless tải lên và tải về

  • cung cấp một tập tin đầy đủ dữ liệu để làm việc trên
  • tiết kiệm kết quả của họ vào một tệp

Tất cả thao tác được thực hiện trong javascript, vì vậy tôi thực sự không cần mã phía máy chủ (chỉ lưu trữ tĩnh) và tôi thích nó theo cách đó.

Trong Firefox, tôi có thể sử dụng file manipulation api để cho phép người dùng tải tệp trực tiếp lên mã phía máy khách (sử dụng tiêu chuẩn <input type=file/>) và tạo URL đối tượng ra khỏi tệp để người dùng có thể lưu tệp bởi mã phía máy khách.

<input type="file" id="input" onchange="handleFiles(this.files)"> 
<a download="doubled" id="ex">right-click and save as</a> 
<script> 
    function handleFiles(fileList){ 
    var builder = new MozBlobBuilder(); 
    var file = fileList[0]; 
    var text = file.getAsBinary(); 
    builder.append(text); 
    builder.append(text); 
    document.getElementById('ex').href = window.URL.createObjectURL(builder.getBlob()); 
    } 
</script> 

Điều này thật tuyệt. Bây giờ tôi muốn làm tương tự trong các trình duyệt khác - hoặc, ít nhất, các phiên bản hiện đại của các trình duyệt khác. API tương tự có tồn tại cho Chrome và IE không? Nếu có, có ai đã xây dựng trình bao bọc chéo trình duyệt mà tôi nên sử dụng không?

Trả lời

1

Khám phá FileSaver.jsa[download] attribute (được hỗ trợ trong kênh nhà phát triển Chrome). Các URL của blob (đối tượng) có phần limited support ngay bây giờ.

+0

tuyệt vời - Tôi đã chỉ ra rằng tôi cần một cái gì đó giống như các blob blob để lưu những thứ tôi đã tạo ra. – rampion

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