6

Mục tiêu: Cho phép người dùng chọn một thư mục, sau đó tìm tất cả các file một cách đệ quy phù hợp với mẫu tập tin và chuyển giao (POST) đến máy chủ web của tôiTải lên tập tin từ thư mục và thư mục con để webapp

Về bản chất chỉ là hộp thoại tải lên nâng cao hơn ...

Công nghệ web chuẩn (chúng tôi đang sử dụng plupload) không hỗ trợ điều này, vì lý do bảo mật, ngoại lệ.

Yêu cầu bổ sung: Dễ sử dụng/cài đặt từ webapp. Cần có chứng chỉ SSL và ứng dụng người dùng. Một số dữ liệu khác như ID bản ghi (nhận hoặc tạo từ ứng dụng web) để liên kết các tệp tải lên sẽ tốt đẹp.

Bản thân ứng dụng web được viết bằng Ruby on Rails, nhưng điều đó không thực sự quan trọng nếu tôi cần một số máy Mac và Windows (= 80% người dùng của tôi) máy tính để bàn.

Tùy chọn của tôi là gì?

Mã và tham chiếu đến libs nguồn mở để thực hiện việc này là phần thưởng.

+0

"tìm tất cả các tệp đệ quy khớp với mẫu tệp" Giống như, bạn đang cố gắng tải lên tất cả các png (nhưng có thể không phải là jpg) từ một thư mục? Bạn đang thực sự cố gắng xử lý những gì? – whitehat101

+0

Thứ nhất: đúng. 2: ý bạn là gì, loại tệp nào? * .dcm – oma

Trả lời

4

Tôi khuyên bạn nên tạo ứng dụng Adobe Air.

Bạn có thể sử dụng lại mã jp tải lên hiện tại của mình và mở rộng mã đó bằng apis không khí adobe. Lý tưởng nhất, nó sẽ là một ứng dụng chủ yếu là tĩnh nhưng thực hiện một cuộc gọi máy chủ để tạo ra các tài liệu chính sách, và làm bất kỳ cuốn sách giữ bạn muốn làm trên các tải lên. Hãy lên đến đỉnh tại Accessing AIR API classes from JavaScript. Sau đó, nhìn vào lớp filesystem.File.

Flash có mức độ thâm nhập 99,3% và người dùng chỉ cần nhấp vào "Cài đặt Trình tải lên của tôi" và khung máy được tự động cài đặt nếu cần. Air cũng có trên Android và iDevices, vì vậy ứng dụng của bạn có thể sẽ có sẵn cho 99.999% người dùng và mẹ của họ.

Nó đã cho tôi một phút để tìm thấy nó, nhưng đây là Adobe® AIR® API Reference for HTML Developers

Oh hãy nhìn những gì tôi tìm thấy trong ví dụ của họ:

var directory = air.File.documentsDirectory; 

try 
{ 
    directory.browseForDirectory("Select Directory"); 
    directory.addEventListener(air.Event.SELECT, directorySelected); 
} 
catch (error) 
{ 
    air.trace("Failed:", error.message) 
} 

function directorySelected(event) 
{ 
    directory = event.target ; 
    var files = directory.getDirectoryListing(); 
    for(var i = 0; i < files.length; i++) 
    { 
     air.trace(files[i].name); 
    } 
} 
1

Tôi sẽ xây dựng một khách hàng bắt đầu từ một cái gì đó như thế này: https://github.com/ms4720/s3sync để bạn có thể giữ nó trong gia đình ruby. Nếu bạn cần một gui thân thiện: http://shoesrb.com/tutorials/

+0

Điều này sẽ không hoạt động đối với người dùng thông thường. Ruby không nhất thiết phải cài đặt cũng như không thể cung cấp thông tin đăng nhập S3 cho công chúng. Về bản chất tôi chỉ cần một hộp thoại tải lên nâng cao hơn – oma

0

tôi vẫn nghĩ rằng một ứng dụng Adobe Air là một giải pháp vững chắc để vấn đề của bạn. Cung cấp cài đặt/cập nhật dễ dàng, hỗ trợ ssl, cho phép bạn kiểm soát hoàn toàn trải nghiệm người dùng, nền tảng chéo 110%, v.v ... Tuy nhiên, nếu bạn ghét Adobe hoặc viết mã giao diện người dùng, bạn đã xem WebDav/dav4rack gem chưa?

https://github.com/bryanrite/dav4rack-example-devise-subdirectories

Đó GitHub Ví dụ sử dụng đưa ra trong một ứng dụng đường ray để xác thực, và sử dụng các thông tin tương tự cho một người sử dụng để truy cập vào một xô tin nơi họ có thể tải lên tập tin thông qua bất kỳ khách hàng WebDav. Ứng dụng web của bạn có thể cung cấp liên kết bao gồm tên người dùng trong URL để giúp truy cập thuận tiện hơn.

Trình tìm kiếm OS X hỗ trợ WebDav thông qua hộp thoại "Kết nối với máy chủ" của người tìm (Kể từ 10.1.1).

Nếu người dùng của bạn sử dụng Linux, tôi chắc chắn họ có thể tìm ra WebDav.

Từ quét http://en.wikipedia.org/wiki/WebDAV có vẻ như Windows được hỗ trợ WebDav trong Win98. Tuy nhiên, cùng với mọi tiêu chuẩn web khác, Microsoft đã quyết định là, um, sáng tạo. Có vẻ như người dùng được cập nhật với KB892211, KB907306, Office, Internet Explorer, OLE-DB và/hoặc "Microsoft Update for Web Folders", họ có thể truy cập các thư mục WebDav qua SSL với nhiều lược đồ xác thực khác nhau một cách dễ dàng. Tôi chắc chắn rằng tất cả người dùng Windows của bạn đang sử dụng Windows Chính hãng với tất cả các bản cập nhật mới nhất và một bộ Office Suite hoàn chỉnh.

Vì ứng dụng đường ray của bạn Máy chủ WebDav, bạn sẽ có thể ném lỗi (Không thể ghi tệp đó vào máy chủ), đăng các tệp/thư mục được tải lên quá trình và thực hiện bất kỳ sổ sách kế toán nào bạn cần (bạn có tài khoản của người dùng, cùng với những gì họ đã tải lên). Dav4rack khá đẹp. Bạn có thể sử dụng một hệ thống tập tin thực sự như một phần phụ trợ, hoặc một cơ sở dữ liệu, hoặc trả lại các tập tin được tải lên S3, hoặc bất cứ thứ gì bạn có thể làm trong ruby.

Tôi không nghĩ giải pháp này đề cập đến cấu phần "tìm tất cả các tệp đệ quy khớp với mẫu tệp" cũng như ứng dụng Air. Nếu không có kinh nghiệm thực tế, tôi tưởng tượng rằng sự khớp mẫu sẽ xảy ra sau khi quá trình tải lên hoàn tất (có khả năng băng thông không hiệu quả).

+0

bạn thực sự muốn tiền thưởng này, Jeremy, haha. Không chắc chắn những gì tôi nghĩ về WedDav mặc dù, nhưng cảm ơn bạn đã chia sẻ. Khi một Q là rất quan trọng với tôi, tôi thêm tiền thưởng để cố gắng có được nhiều góc độ nhất có thể. Bạn sẽ kiếm được nó cho câu trả lời AIR adobe. Cảm ơn một lần nữa. – oma

+0

Công ty của tôi đã xem xét các công cụ tải lên. Tôi đã tạo một ứng dụng như một phần của ứng dụng đường ray được đẩy trực tiếp lên S3 (không phải ứng dụng Air), nhưng hóa ra là có một vài điều kỳ quặc với điều đó. Chúng tôi đã làm việc đó, nhưng chỉ với ánh bạc. Flash không thể tải lên tiến trình, có một số vấn đề với tệp bị hỏng. HTML5 không thành công, HTML4 đã làm việc với tiến độ và tôi nghĩ rằng nó cần tiêu đề tùy chỉnh. Nó đã đến mức mà tôi cảm thấy khá trực tiếp với S3 chưa sẵn sàng để sản xuất. Tôi đã suy nghĩ về việc làm lại mọi thứ và xây dựng thêm các ứng dụng Air, nhưng nó thuộc về dự án tiếp theo cho tôi! – whitehat101

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