以下代码适用于Chrome和Firefox,但我们遇到了Safari问题。
的File出现之前,它被附加到FormData遗憾的是Safari不给予足够的支持来查看一次连接到FormData
我们的问题是文件很好地形成的,一旦它发送到我们的服务器倾出var_dump($_FILES['file'])显示文件为空(大小属性为0)。
我相信这是Safari对Safari的“基本”支持FormData,但我尝试使用的Polyfillers尚未解决问题。有没有解决的办法?
// From Controller
$scope.uploadImage = function(croppedImage) {
$scope.uploadingImage = true;
var imageBlob = dataURItoBlob(croppedImage);
var options = {
action: 'upload_file',
format: 'media_item',
output: 'json'
}
var file = new File([ imageBlob ], $scope.filename,{
type: 'image/png'
});
console.log(file.size);
MediaService.uploadImage(file, options).then(
function(response) {
$modalInstance.close(response);
}
).finally(
function() {
$scope.uploadingImage = false;
}
)
};
// From MediaService (angular service
uploadImage: function(image, params){
var formData = new FormData();
formData.append('action', params.action);
formData.append('format', params.format);
formData.append('file', image);
//The POST header needs to be multipart/form-data
$http.defaults.headers.post = {};
return $http({
method: 'POST',
url: apiMediaUrl,
data: formData,
transformRequest: angular.identity,
headers: { 'Content-Type': undefined },
withCredentials: true
})
.then(
function(response) {
return response.data.payload;
},
function(errorResponse) {
throw errorResponse.data.payload || errorResponse.data;
}
);
}
2017-10-04
James
+0
尝试改变'MediaService.uploadImage(文件选项)''来MediaService.uploadImage(imageBlob,期权)',如果没有工作,然后提供的console.log的'结果(imageBlob )'和'console.log(文件)' –
+0
哈,我们刚刚得到了这个,以前我们的API是拒绝他们。但是,如果我们通过'uploadImage'文件名和'formData.append('文件',图像,文件名);'它的工作。其他几个扭结要解决,但它们应该很容易。 谢谢! –
+0
所以你的问题解决了? –