formdata上传文件服务器,Safari通过FormData将文件上传到服务器上文件上传通过FormData...

以下代码适用于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

所以你的问题解决了? –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值