有没有人知道通过Ajax上传文件的方法,并从支持PlayFramework的文件上传到File对象的桌面上使用拖放功能?
我尝试了几种不同的方法,没有任何正常的工作.
这是我的成功尝试:
编辑路径文件并添加
POST /upload Application.upload
我们的控制器是应用程序,我将使用它来保持简单.
编辑您的应用程序控制器类
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}");
}
在app / views / Application文件夹/包中编辑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,位于app / views文件夹/包中,并在jQuery之后添加此行
<script src="@{'/public/javascripts/client/fileuploader.js'}" type="text/javascript"></script>
最后的笔记
记得从AJAX Upload Valums下载脚本,享受!
你也可以grab the source here.
我在不同的浏览器中测试了它,至少对我来说是适用的.在Riyad玩的信用!邮件列表谁暗示了我有关请求
P.S:我正在使用我之前发表的评论
编辑代码的答案已经按照T.J.的指示添加. Crowder,我同意:)