2016-11-01 2 views
0

Мы прототипировали клиентскую программу, которая позволяет пользователям выбирать локальную папку, создает zip, а затем локальный браузер знает о местоположении файла zip через локальный веб-сокет. Цель состоит в том, чтобы затем сообщить fineUploader об этом новом месте zip-файла, чтобы он мог сразу начать процесс загрузки.программно передается FineUploader местоположение файла для загрузки

Но я не понимаю, как сделать эту последнюю часть передачи обслуживания. Я только что увидел this post, что звучит относительно.

Есть ли способ? Если нет, как мы можем сделать приемлемый пользовательский опыт, учитывая, что пользователь выбрал каталог, он был зашифрован для них, и мы хотим, чтобы компонент fineUploader обработал загрузку?

Спасибо!

Stu

+0

Этот zip-файл хранится в файловой системе локального пользователя? Доступен ли почтовый файл через HTTP или веб-сокеты? –

+0

Да, это локальная файловая система пользователя. Мы написали крошечный сервер websocket, работающий как java-приложение, с которым разговаривает местная страница. Он запрашивает пользователя с помощью выбора swing-файла, затем запускает a-zipping, отправляет ход и окончательный статус (местоположение zip) по каналу websocket. – stu2

+0

Доступен ли файл zip через HTTP или веб-сокеты? –

ответ

1

код работает в браузере не в состоянии получить доступ к файловой системе непосредственно. Если вы хотите загружать файлы, вашим пользователям придется вручную выбирать эти файлы с помощью drag-and-drop или диалогового окна выбора <input type="file">.

Однако, если zip-файл доступен через HTTP или WS, это возможно. Предполагая HTTP, вы можете сделать запрос GET ajax для zip-файла, read it into a Blob, а затем отправить этот Blob в Fine Uploader через addFiles API method. Если вы читаете файл по WS, вам нужно взять возвращенные данные и преобразовать их в Blob, используя FileReader.

Обратите внимание, что это невозможно в браузерах старше IE10.

+0

Wow. Спасибо Рэй. Это будет работать для нас. – stu2

+0

Возможно, это проблемы с памятью для больших файлов? Как и в случае, если zip на самом деле равен 500 МБ, существует ли способ избежать хранения всех данных потокового файла в памяти? Я понимаю, что S3 требует длины контента, поэтому файл должен полностью переноситься через websocket на локальную страницу, тогда fineUploader будет передавать данные на S3. Хотите знать, есть ли что-нибудь, о чем я должен думать, или использовать определенный API для чтения из websocket, что может свести к минимуму объем памяти для больших файлов? – stu2

+0

Да, это может иметь проблемы с памятью для больших файлов. Нет разумного способа избежать этого. Честно говоря, вместо того, чтобы заархивировать файловую серверную сторону, а затем передать файл в браузер, просто чтобы отправить файл на другой сервер, вместо этого вы должны отправить zip-файл на конечную серверную серверную часть. –

Смежные вопросы