2011-12-11 34 views
9

Tôi đang cố gắng tạo ứng dụng web dựa trên ExtJS và tôi đang làm việc trên khu vực tải lên tệp của ứng dụng.Tôi làm cách nào để người dùng tải tệp lên bằng cách sao chép/dán?

Tôi muốn người dùng có thể tải tệp lên bằng cách sao chép và dán chúng - không chỉ sao chép và dán nội dung của tệp mà còn là tệp. Ví dụ: trong Windows, bạn có thể chọn "Sao chép" hoặc "Cắt" từ trình đơn Chỉnh sửa trong khi tệp được chọn, sau đó chọn "Dán" sau và sao chép hoặc di chuyển tệp - Tôi muốn người dùng có thể tải lên tệp vào ứng dụng của tôi trong bước Dán, chỉ cần chọn Dán trong trình duyệt của họ.

Tôi đã thử API kéo và thả của HTML5, nhưng chúng tôi không muốn sử dụng API đó - chúng tôi muốn người dùng có thể sao chép/cắt và dán tệp để tải lên tệp của họ (miễn là chúng ' nhỏ hơn 20 megabyte). Nếu người dùng sao chép đường dẫn đến tệp của họ và dán trực tiếp vào trang, hãy cho chúng tôi biết nơi tìm tệp, điều đó cũng có thể hoạt động.

Có ai có thể đề xuất cách để thực hiện việc này không?

+1

Cách Windows xử lý đó là với khay nhớ tạm thời của hệ thống, xử lý tham chiếu tệp được sử dụng để sao chép/cắt và dán ở nơi khác. Những gì bạn cần biết là nếu cửa sổ trình duyệt có quyền truy cập vào các tệp xử lý trên khay nhớ tạm trong quá trình sao chép/cắt/dán. Một tùy chọn khác có thể là ứng dụng Flash hoặc Java để mở rộng trình duyệt. –

+0

gotcha bạn đang nói rằng tôi cần phải tạo ra một điều sorta cầu mà có thể xử lý tất cả các hoạt động cắt/sao chép ngay –

Trả lời

6

Vấn đề là bạn không thể truy cập hệ thống tệp khách hàng bằng javascript. Có Filesystem API mới này, nhưng điều này chỉ cho phép bạn tạo một hệ thống tệp sandboxed ảo. Tôi đã có cùng một vấn đề, suy nghĩ về nó một lúc và đưa ra những ý tưởng sau đây.

  1. flash

    Viết một cầu Flash mà truy cập vào hệ thống tập tin và để cho các javascript giao tiếp với nó thông qua swliveconnect

    Vấn đề: Flash không có quyền truy cập hệ thống tập tin một trong hai.

  2. Java applet

    Cùng một điều như Flash và một lần nữa với LiveConnect

    Theo tôi điều này có thể làm việc, nhưng tôi đã không thử nó ra, bởi vì mục tiêu của tôi là để có được quyền truy cập hệ thống tập tin trên một chromebook. Và ChromeOS không hỗ trợ Java (ít nhất là nếu không có hack)

  3. ActiveX

    Tôi cũng tìm thấy một số giải pháp với điều này. Tôi đã từ bỏ phần applet nên tôi cũng không thử.

Như bạn đã sao chép tệp, os chỉ lưu đường dẫn đến tệp trong khay nhớ tạm. Sau đó, nếu bạn nhận được sự kiện dán trên webapp của bạn chỉ nhận được chuỗi ra khỏi clipboard và chuyển tiếp nó vào cầu nối tệp của bạn.

+0

cũng cảm ơn bạn đã giúp tôi đã tự hỏi về những điều tôi sẽ sử dụng bởi vì tôi sẽ xây dựng nó trong html 5 là nó đúng để làm điều đó! –

+0

oh đây là vấn đề nếu đã có một api trong html5 hỗ trợ sao chép/dán sự kiện như vậy trong trường hợp đó tôi cần cầu –

+0

Với sự kiện dán của API Clipboard bạn chỉ nhận được đường dẫn tuyệt đối cho tệp. Để thực sự truy cập vào tập tin bạn cần một cầu nối tập tin. –

-1

Tôi đã thấy rằng DropBox.com cho phép điều này được thực hiện (trong chrome- dường như không hoạt động trong IE). Tôi đã không cắt và dán cụ thể, nhưng kéo tập tin vào một trang dropbox từ một thư mục địa phương, và nó tải lên các tập tin. Vì vậy, điều này không trực tiếp trả lời quesiton của bạn, nhưng có lẽ bạn có thể xem làm thế nào điều này được thực hiện trong mã của họ.

+0

Bạn hiểu lầm câu hỏi. Không kéo và thả mà còn sao chép và dán. – freemanoid

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