1

ファイル入力が変更されたときにファイルを選択し、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 に直接アップロードすることは可能ですか?

4

1 に答える 1

2

多くの調査の結果、ngFileUpload を使用せずにファイルの代わりに blob を s3 に送信できることがわかりました。

このライブラリを使用して base64 を BLOB に変換し、 Upload.upload()file パラメーターでファイルの代わりに生成された BLOB を渡しました。

于 2015-05-08T03:27:48.930 に答える