【问题标题】:Uploaded file only contains "WebKitFormBoundary"上传的文件只包含“WebKitFormBoundary”
【发布时间】:2014-09-06 08:02:31
【问题描述】:

我真的不知道这里发生了什么。每次我尝试上传文件时,文件包含的所有内容都是:

------WebKitFormBoundaryJ0uWMNv89fcUsC1t--

过去两天我一直在寻找某种解释,但我只是在兜圈子。我不知道为什么会这样。

表格:

<form id="upload-file" ecntype="multipart/form-data">
    <input name="picture" type="file">
    <input type="button" value="Upload" id="upload-button" />
</form>

Javascript:

$('#upload-button').click(function(e){
        e.preventDefault();
        var formData = new FormData($('#upload-file'));
        $.ajax({
            url: '/image',  
            type: 'POST',
            xhr: function() {  
                var myXhr = $.ajaxSettings.xhr();
                if(myXhr.upload){ 
                    myXhr.upload.addEventListener('progress',progressHandlingFunction, false);
                }
                return myXhr;
            },
            data: formData,
            cache: false,
           // contentType: false,
            processData: false
        });
    });

控制器:

def image = Action(parse.temporaryFile) { request =>
   request.body.moveTo(new File("/tmp/picture"))
   Ok("File uploaded")
}

【问题讨论】:

    标签: javascript jquery scala playframework playframework-2.0


    【解决方案1】:

    问题出现在 Javascript 中,而不是 Scala 中。我没有不正确地引用表单元素。

    var formData = new FormData($('#upload-file')[0]);
    

    但是,parse.temporaryFile 也有问题,它没有使用上面的代码正确存储文件。当我在文本编辑器中检查存储的文件时,我注意到文件开头仍然有 ------WebKitFormBoundaryJ0uWMNv89fcUsC1t-- 内容,然后是表单信息,然后是文件字节。

    为了解决这个问题,我只是使用Play Documentation 的默认方法进行多部分上传,并且效果很好。

    def image = Action(parse.multipartFormData)  { request =>
       request.body.file("picture").map { picture =>
          val filename = picture.filename
          picture.ref.moveTo(new File(s"/tmp/picture/$filename"))
          Ok("ok")
       }.getOrElse {
          InternalServerError("file upload error")
       }
    }
    

    【讨论】:

    猜你喜欢
    • 2016-12-11
    • 1970-01-01
    • 2017-05-18
    • 2013-06-01
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    相关资源
    最近更新 更多