Tôi đã thiết lập tập lệnh tải lên tệp kéo và thả trong JS (AJAX POST) và tôi đang gặp khó khăn khi lọc thư mục trong Safari - Phiên bản 5.0.3 (6533.19.4).Kéo và thả HTML5 - phát hiện thư mục trong Safari (FileList, File)
Bất cứ khi nào tôi thả nhiều tệp/thư mục vào trình duyệt, Chrome sẽ lọc ra các thư mục và Firefox sẽ trả lại 0 cho .size
do đó nó tầm thường để bảo vệ chống lại các trường hợp đó. Tuy nhiên, Safari sẽ trả lại tệp 68 byte (kích thước của thư mục).
Có cách nào để kiểm tra xem điều này File
(mục trong FileList
) là một thư mục không? dường như không thể tìm thấy bất cứ điều gì trong File/Blob API mà kiểm tra cho tình trạng này (không có điểm trong cố gắng .type
, vì nó sẽ trả về không có gì cho các tập tin không rõ cũng như các thư mục ...) biết thêm
Một chút:
Về cơ bản điều xảy ra là yêu cầu AJAX có thân trống. Tôi đang tải lên với FormData
:
var file = ...; // the dropped file
var formData = new FormData();
formData.append("file", file);
var xhr = new XMLHttpRequest();
...
xhr.send(formData);
tôi gửi một báo cáo lỗi cho điều này: https://bugs.webkit.org/show_bug.cgi?id= 63898 – meleyal
Các phiên bản Chrome mới nhất dường như có cùng vấn đề với Safari. Bạn có may mắn theo dõi một phương pháp tiêu chuẩn để lọc chúng ra không? –
Dường như có thuộc tính 'isDirectory' dựa trên tài liệu này https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry/isDirectory nhưng có thể không được hỗ trợ trong Safari. –