ファイル入力が変更されたときにファイルを選択し、django バックエンドでアップロード データに署名し、フロントエンドから直接 s3 バケットにアップロードする作業スクリプトがあります。それはうまくいっています。私はそれを行うために ng-file-upload を使用しています。
var doSignUrl = function(image, success, error){
$http({
url: scope.signUrl,
params: {
s3_object_name: image.name,
s3_object_type: image.type
},
method: 'get'
}).success(success).error(error);
};
var getUploadConfig = function(image, data){
return {
url: data.url,
method: 'POST',
fields : {
key: data.path,
AWSAccessKeyId: data.aws_access_key_id,
acl: data.acl,
policy: data.policy,
signature: data.signature,
"Content-Type": image.type != '' ? image.type : 'application/octet-stream',
filename: data.file_name
},
file: image,
};
};
var doUpload = function(image){
doSignUrl(image, function(signData){
Upload.upload(getUploadConfig(image, signData)).progress(function(e){
doProgress(image, parseInt(100.0 * e.loaded / e.total))
}).success(function(data, status, header, config){
doSuccess(image, signData.url+'/'+signData.path);
}).error(function(data, status, header, config){
doError(image);
});
}, function(data, status, header, config){
console.log(status);
console.log(data);
});
}
ファイルピッカーが選択した各ファイルに対して、私は呼び出しますdoUpload(file)
しかし、私の本当の目的は、アップロードする前にキャンバスを使用してフロントエンドで画像をトリミングすることです。問題は、キャンバスを使用して画像をトリミングすると、ファイルではなく base64 でエンコードされた画像になることです。私の最後の質問は、この base64 イメージを s3 に直接アップロードすることは可能ですか?