Ответ 1
Здесь моя успешная попытка:
Изменить файл маршрута и добавить
POST /upload Application.upload
Наш контроллер Application
, я буду использовать его для упрощения.
Изменить класс контроллера приложений
public static void upload(String qqfile) {
if (request.isNew) {
FileOutputStream moveTo = null;
Logger.info("Name of the file %s", qqfile);
// Another way I used to grab the name of the file
String filename = request.headers.get("x-file-name").value();
Logger.info("Absolute on where to send %s", Play.getFile("").getAbsolutePath() + File.separator + "uploads" + File.separator);
try {
InputStream data = request.body;
moveTo = new FileOutputStream(new File(Play.getFile("").getAbsolutePath()) + File.separator + "uploads" + File.separator + filename);
IOUtils.copy(data, moveTo);
} catch (Exception ex) {
// catch file exception
// catch IO Exception later on
renderJSON("{success: false}");
}
}
renderJSON("{success: true}");
}
Отредактируйте приложение Application.html в приложении/представлениях/папке/пакете приложений
#{extends 'main.html' /}
#{set title:'Multiple Uploads' /}
<div id="file-uploader">
<noscript>
<p>Please enable JavaScript to use file uploader.</p>
<!-- or put a simple form for upload here -->
</noscript>
<script>
function createUploader(){
var uploader = new qq.FileUploader({
element: document.getElementById('file-uploader'),
action: '/upload',
debug: true
});
}
// in your app create uploader as soon as the DOM is ready
// don't wait for the window to load
window.onload = createUploader;
</script>
</div>
Отредактируйте основной макет: main.html, расположенный в папке/пакете приложений/представлений и добавьте эту строку после jQuery
<script src="@{'/public/javascripts/client/fileuploader.js'}" type="text/javascript"></script>
Заключительные примечания Не забудьте загрузить script из AJAX Upload Valums, наслаждайтесь!
Вы также можете захватить источник здесь.
Я тестировал его в разных браузерах, он работает для меня как минимум. Кредиты для Рияда в игре! который намекнул мне о request.body
P.S: Я использую тот, который я опубликовал в качестве комментария до
Edit Ответ с кодом был добавлен по указанию T.J. Бракондер, я согласен:)