2016-10-18 4 views
6

В настоящее время я использую функцию перетаскивания & компонента «Первичные файлы». Он работает нормально, но я хочу загрузить файлы напрямую, перетащив их куда угодно на мою страницу, без необходимости нажатия кнопки.Загрузка файла JSF путем перетаскивания файла в любую точку страницы

Я попытался это:

$('.dropzone').on({ 
    'dragover dragenter': function (e) { 
     e.preventDefault(); 
     e.stopPropagation(); 
    }, 
    'drop': function (e) { 
     var dataTransfer = e.originalEvent.dataTransfer; 
     if (dataTransfer && dataTransfer.files.length) { 
      e.preventDefault(); 
      e.stopPropagation(); 
      $.each(dataTransfer.files, function (i, file) { 

       uploadFile([{"name": "filename", "value": file.name}]); 
      }); 
     } 
    } 
}); 

<p:remoteCommand name="uploadFile" action="#{bean.uploadFile()}" /> 

public void uploadFile(){ 
    String filename = 
     FacesContext.getCurrentInstance() 
     .getExternalContext().getRequestParameterMap().get("filename"); 
} 

Проблема заключается в том, что это работает для файла, но не для самого файла. В любом случае, это правильный подход или есть способ переслать список files в файл «Первичные файлы» и отправить файлы программно без использования gui-компонента?

+0

вы пробовали это [SO ответ] (http://stackoverflow.com/questions/18439699/primefaces-file-upload-drop-file-outside-of-pfileupload-anywhere-in-the-page) до? – malaguna

+0

Да, но это не сработало. Я не уверен, что это решение по-прежнему работает для Primefaces 6.0. – sinclair

+2

Я не уверен, что он удовлетворяет ваши потребности, но есть эта вещь: [Dropzone] (http://stackoverflow.com/questions/38018632/use-dropzone-with-jsf) – sunofkyuss

ответ

-2

Вы попробовали dragDropSupport="true"?

<p:fileUpload fileUploadListener="#{fileUploadView.handleFileUpload}" mode="advanced" dragDropSupport="true" 
         update="messages" sizeLimit="100000" allowTypes="/(\.|\/)(gif|jpe?g|png)$/" /> 

Это работает очень хорошо для меня.

+2

Это не отвечает * «Я хочу загрузить файлы напрямую, перетащив их куда угодно на мою страницу» * – BalusC

0

Это уже есть в витрине. http://www.primefaces.org/showcase/ui/file/upload/auto.xhtml

Нужно auto="true", чтобы это осуществить.

Update:

Выполните следующие JavaScript сразу после рендеринга DIV загрузки файла. Затем вы можете удалить разрешенные типы файлов в любом месте страницы.

$('.ui-fileupload').fileupload({ 
     dropZone: $(document) 
}); 
+2

Это не отвечает * «Я хочу, чтобы загружать файлы напрямую, перетаскивая их куда угодно на мою страницу» * – BalusC

+0

@BalusC Что именно он не отвечает? Можете ли вы объяснить ... – sura2k

+0

Эту проблему говорится. Попробуйте прочитать вопрос (и все комментарии и другие ответы) перед отправкой ответа/комментария. – BalusC

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