Tôi đang cố gắng tải xuống tệp bằng cách sử dụng FileSaver.js, nhưng tôi nhận được tệp bị hỏng bất cứ khi nào tôi nhấn nút tải xuống.Tải xuống bị hỏng trong ứng dụng AngularJs
Ứng dụng được hỗ trợ bởi dịch vụ REST PHP và việc sử dụng cURL từ dòng lệnh xác nhận rằng REST đang hoạt động OK.
Đây là phiên bản cuối cùng của pseudo-code mà tôi sử dụng để tải về:
// Let str be the data received from $http promise
// This code is run in a "then" callback
var arr= new Uint8Array(str.length);
for(var i=0; i<str.length; i++) {
arr[b]=str.charCodeAt(i);
};
var blob = new Blob([arr], {type: 'application/octet-stream'});
saveAs(blob, "AFileName");
Nó chỉ corrupts file.
Tôi cũng đã thử mà không cần áp dụng Uint8Array
và cấp trực tiếp str
cho Blob
. Như bạn đã đoán, nó cũng thất bại.
Tôi đang viết máy chủ và máy khách, vì vậy tôi có thể thay đổi bất kỳ thứ gì trong đó. Nhưng vấn đề là tôi muốn xử lý tải xuống phía máy khách và tôi không thể chuyển hướng người dùng đến tệp URL để tải xuống, vì REST cần xác thực và mã thông báo đó chỉ tồn tại trong ứng dụng Góc. Nó sẽ không phải là một lựa chọn tốt để thay đổi máy chủ chỉ để xử lý tải tập tin mà không cần xác thực.
REST có URL như /files/:id
khi truy cập, cung cấp nội dung tệp dưới dạng tệp tải xuống HTTP thông thường (được kiểm tra bằng cURL như đã nói ở trên). Có thể $http
là sự cố không? Bằng cách nào đó buộc một số loại mã hóa hoặc một số giả định về dữ liệu nhận được. Tôi không có nhiều kinh nghiệm trong Angular, dù sao đi nữa.
@ArtjomB Có nội dung "Cảm ơn" chống lại các quy tắc tại đây không? – vfsoraki
Bạn có thể nói rằng: [Nên 'Chào', 'cảm ơn', khẩu hiệu và lời chào được xóa khỏi bài đăng?] (Http://meta.stackexchange.com/q/2950/266187), nhưng đừng đi và xóa những thứ này khỏi bài đăng cũ. Điều đó có thể khiến họ chú ý không mong muốn. Ngoài ra, khi bạn thực hiện việc này, bạn nên sửa mọi thứ trong bài đăng. Lý do tôi thực hiện chỉnh sửa này là vì một người dùng khác đã đề xuất thẻ PHP cho câu hỏi của bạn có vẻ sai vì bạn đã nói rằng bạn đã thử nghiệm phần đó và nó hoạt động. Sau đó tôi từ chối chỉnh sửa của họ với bản chỉnh sửa của riêng tôi. –