jQuery $ .ajax multipart / form-data not FULLY upload images

时间:2013-01-30 02:42:31

标签: jquery image upload multipartform-data

我有一个移动网站,允许用户上传他们在设备上拍摄的图像以及他们输入的一些文字。目前它将图像编码为base64但不幸的是它将它们膨胀了大约30%。我想通过POST实现multipart/form-data方法来优化这个功能。

以下是我如何实施它。在服务器端,我有一个我正在测试的PHP脚本。它将二进制数据保存到文件,但它只捕获9个字节,因为服务器认为数据类型为 text / plain ,因此仅捕获前9个可打印字符。在这种情况下,我正在测试PNG文件,这就是我得到的。

PNG uploaded file hexed. Only 9 bytes captured

有人在这里添加或删除任何不寻常的内容吗?这让我疯了。

        var boundary = 'boundary' + Math.floor(Math.random() * (new Date().getMilliseconds()) );

        var data = "--" + boundary + '\r\n';
            data+= "content-disposition: form-data; name=\"txt\"" + '\r\n';
            data+= "content-type: text/plain" + '\r\n\r\n';
            data+= "Text+data\r\n" + '--' + boundary + '\r\n' ;
            data+= "content-disposition: form-data; name=\"img\"" + '\r\n';
            data+= "content-length: " + (image_length) + '\r\n';
            data+= "content-type: application/octet-stream" + '\r\n\r\n';
        var body_length = image_length + ('\r\n--' + boundary).length + data.length;
            data+= binary_data + '\r\n--' + boundary;

        $.ajax({ type : 'POST', url : 'post.test.php?len=' + image_length,
            data : data, contentType: 'multipart/form-data, boundary=' + boundary, contentLength: body_length
        });

0 个答案:

没有答案