2012-02-21 35 views
8

Nếu người dùng cố gắng kéo và thả thư mục vào trình kiểm soát tải lên tệp của tôi để tải lên, thì tôi cần hiển thị thông báo lỗi cho người dùng nói rằng chỉ có thể tải lên tệp. Vấn đề là tôi không thể phân biệt một tập tin từ một thư mục.Cách phân biệt tệp từ thư mục trong khi tải lên bằng cách kéo và thả trong jquery?

Một cách tôi nghĩ là kiểm tra thuộc tính loại tệp của jQuery. Giả sử rằng tên của tệp là "test.txt", thì loại tệp sẽ trả về "văn bản/đồng bằng". Đối với một tên thư mục thông thường như "TestFolder", loại tệp sẽ trống và kích thước tệp của nó sẽ trả về 0. Tuy nhiên, nếu tên thư mục bao gồm phần mở rộng như "TestFolder.txt", thì loại tệp sẽ trả về "văn bản/đồng bằng".

Vì vậy, tôi có thể đã kiểm tra loại tệp và kích thước tệp nhưng nó sẽ không hoạt động chính xác cho tên thư mục như "TestFolder.txt". Có thể bất kỳ một đề nghị cho tôi một giải pháp tốt để sửa lỗi này bằng cách sử dụng jQuery hoặc phương pháp khác?

+1

Bạn có thể chỉ định plugin "kéo và thả" bạn đang sử dụng không? (nếu có) –

+0

Bạn có thể muốn lưu ý rằng IE chưa có FileAPI, vì vậy nó có thể không cung cấp cho bạn một tệp cho nó, có lẽ chỉ là một tên. – index

+0

Thấy điều này và nghĩ rằng nó có thể giúp bạn, họ đã có cùng một vấn đề: [Làm thế nào để phân biệt một tập tin hoặc thư mục] (http://stackoverflow.com/questions/5893787/how-do-i-distinguish-a-file- or-a-folder-in-a-kéo-và-thả-sự kiện-in-c) – JamaicanMeCrazy

Trả lời

-1

Theo như tôi biết trình duyệt (Và javascript vốn có) không có quyền truy cập vào bất kỳ phương pháp truy cập tệp nào vì mục đích bảo mật, do đó bạn không thể kiểm tra tệp thực sự là gì.

Tôi đã làm việc với vấn đề này trong quá khứ và tùy chọn tốt nhất tôi thấy rằng công trình là xử lý tệp phía máy chủ và trả về lỗi sau khi tải lên xong.

Tôi rất vui khi thấy các lựa chọn thay thế tốt hơn.

3

Khả năng xác định xem thư mục đã bị xóa hay không phụ thuộc vào sự hỗ trợ của tác nhân người dùng là Filesystem API. Nếu tác nhân người dùng KHÔNG hỗ trợ API hệ thống tệp (hiện chỉ có Chrome 21+), bạn có thể sử dụng giao diện Entry, có hai giao diện con: DirectoryEntryFileEntry. Bản thân giao diện có các hàm isDirectoryisFile. Không có hỗ trợ cho giao diện này, không có cách nào để xác định xem các mục bị bỏ là các thư mục khi kiểm tra đối tượng DataTransfer.

0

Vì bạn sẽ không cho phép thư mục kéo và thả, trước tiên hãy kiểm tra xem thư mục hoặc tệp của thư mục đó, chỉ đứng thứ hai nếu đó không phải là thư mục, sau đó kiểm tra phần mở rộng của tệp. Nhưng IE < 11 không hỗ trợ API tệp để xử lý. Hy vọng nó giúp.

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