基于ajax请求使用Play框架上传jar文件
我试图上传一个带有播放应用程序的可执行jar文件。即使文件确实被传输,它也会在传输过程中损坏。我的意思是我不能再执行它了。此外,如果我查看文件的属性,传输的一个比另一个稍小,仅从几个八位字节开始。我用同样的代码上传txt文件,效果非常好。因此,我想这与内容类型或编码,或类似的东西有关 你能帮我做这个吗? 非常感谢:) 服务器代码:基于ajax请求使用Play框架上传jar文件,ajax,file-upload,playframework,multipartform-data,executable-jar,Ajax,File Upload,Playframework,Multipartform Data,Executable Jar,我试图上传一个带有播放应用程序的可执行jar文件。即使文件确实被传输,它也会在传输过程中损坏。我的意思是我不能再执行它了。此外,如果我查看文件的属性,传输的一个比另一个稍小,仅从几个八位字节开始。我用同样的代码上传txt文件,效果非常好。因此,我想这与内容类型或编码,或类似的东西有关 你能帮我做这个吗? 非常感谢:) 服务器代码: @Security.Authenticated(Login.CheckLogin.class) public static Result upload
@Security.Authenticated(Login.CheckLogin.class)
public static Result uploadJarFile() {
Http.MultipartFormData body = request().body().asMultipartFormData();
Http.MultipartFormData.FilePart jarFile = body.getFile("jarFile");
if (jarFile != null) {
String jarPath = System.getProperty("user.dir") + File.separator + jarFile.getFilename();
File file = jarFile.getFile();
File destination = FileUtils.buildEmptyFile(jarPath);
FileUtils.copyFile(file, destination);
return ok();
} else {
System.err.println("Error while uploading jarFile !!");
return redirect(routes.Application.main());
}
}
客户端代码:
function uploadJar(){
var formData = new FormData($("#loadJarForm")[0]);
jsRoutes.controllers.Application.uploadJarFile()
.ajax({
type: 'POST',
data: formData,
cache: false,
contentType: false,
processData: false,
success: function (result) {
console.log("ok");
},
error: function (err) {
console.log("error");
}
}
);
}
<form name="loadJarForm" id="loadJarForm" action="javascript:;" enctype="multipart/form-data" method="post" accept-charset="utf-8">
<div>
<input type="file" name="jarFile" id="jarFile">
</div>
<button type="submit" id="jarUpload" onclick="uploadJar();">Upload</button>
</form>
函数uploadJar(){
var formData=新的formData($(“#loadJarForm”)[0]);
jsRoutes.controllers.Application.uploadJarFile()
.阿贾克斯({
键入:“POST”,
数据:formData,
cache:false,
contentType:false,
processData:false,
成功:功能(结果){
控制台日志(“ok”);
},
错误:函数(err){
控制台日志(“错误”);
}
}
);
}
上传