基于ajax请求使用Play框架上传jar文件

基于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

我试图上传一个带有播放应用程序的可执行jar文件。即使文件确实被传输,它也会在传输过程中损坏。我的意思是我不能再执行它了。此外,如果我查看文件的属性,传输的一个比另一个稍小,仅从几个八位字节开始。我用同样的代码上传txt文件,效果非常好。因此,我想这与内容类型或编码,或类似的东西有关

你能帮我做这个吗? 非常感谢:)

服务器代码:

    @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){
控制台日志(“错误”);
}
}
);
}   
上传