似乎有很多关于此的帖子,但无法在其中找到解决方案,而且我已经碰到了一堵砖墙。帮助,亲爱的Stackers!
我正在编写一些代码,让用户可以选择个人资料图片,裁剪,然后将裁剪后的图像保存在服务器上。我正在使用Cropper.js库来处理实际的裁剪并确定它正常工作,因为我可以使用以下代码显示裁剪:
var imageData = cropper.getCroppedCanvas().toDataURL();
var profileimage = document.getElementById('myProfilePhoto');
profileimage.src = imageData;
现在我想将裁剪后的图像发送到服务器,最好的方法似乎是创建一个blob和Ajax,然后通过php脚本来处理它。
cropper.getCroppedCanvas().toBlob(function (blob) {
var formData = new FormData();
formData.append('file', blob);
formData.append('uuid', '{a unique identifier}');
$.ajax({
type: 'POST',
url: '{the php script}',
data: formData,
processData: false,
contentType: false,
success: function (response) {
console.log('Upload success: '+response);
},
error: function () {
console.log('Upload error');
}
});
});
在这个阶段,我只是将我的php脚本发送到var_dump($ _ REQUEST),所以我可以在控制台中看到脚本认为它的内容。但是,响应只是发回默认的$ _REQUEST对象,如PHPSESSID,没有文件或uuid输入。
我做错了什么?
提前感谢任何指示。
答案 0 :(得分:0)
如果您是通过发帖发送,以便查看请求放置此代码
var formData = new FormData();
formData.append('file', blob);
formData.append('uuid', '{a unique identifier}');
formData.append('_method', 'PATCH'); <---add this and you're good to go
答案 1 :(得分:0)
所以答案很简单,但令人沮丧地很难找到。
我的服务器有一个.htaccess重写规则,它会自动更改www。地址到非www版本,显然我已经愚蠢到包括www。在我调用的URL中,似乎足以在这些情况下剥离$ _POST数据。
所以FormData()和blob在这里都是红色的鲱鱼 - 它只是一个重定向,这是原因。