6

私はユーザーがポッドキャストをアップロードできるウェブサイトに取り組んでいます。ポッドキャストはMP3ファイルであり、AmazonS3バケットに保存されます。

これの通常の流れは何ですか?私はグーグルで検索しましたが、ファイルのアップロードに関連する記事はすべてAmazonクライアントライブラリを使用する傾向があり、タイムアウトのために、MP3ファイルのアップロードにPHP(LAMPスタックを使用)を使用したくないのが理想的です。サイズ制限など

これを回避する方法はありますか?

4

4 に答える 4

4

AmazonS3は直接アップロードをサポートしています。これはここでのオプションかもしれません。PHPの実装については、この投稿を確認してください

于 2012-11-06T14:07:49.340 に答える
1

たくさんのグーグルを繰り返し、GitHubリポジトリと新しいPHP SDKのAmazonドキュメントの両方を行ったり来たりした後、Amazonの新しいPHP SDKを使用してフォームフィールドを生成し、Uploadifyを使用して実際にファイルを直接アップロードするソリューションがあります。私のサーバーをバイパスして、Amazonに。コードは次のようになります。

<?php
$bucket = (string) $container['config']->images->amazon->bucket;
$options = array(
    'acl' => CannedAcl::PUBLIC_READ,
    'Content-Type' => 'audio/mpeg',
    'key' => 'audio/a-test-podcast.mp3',
    'success_action_redirect' => (string) $container['config']->main->base_url . 'upload/success/',
    'success_action_status' => 201,
    'filename' => '^'
);
$postObject = new PostObject($container['amazon_s3'], $bucket, $options);
$postObject->prepareData();

$formAttributes = $postObject->getFormAttributes();
$formInputs = $postObject->getFormInputs();

$uploadPath = $formAttributes['action'];
?>
<script>
    (function($) {
        $('#podcast').uploadify({
            'buttonClass': 'button',
            'buttonText': 'Upload',
            'formData': <?php echo json_encode($formInputs); ?>,
            'fileObjName': 'file',
            'fileTypeExts': '*.mp3',
            'height': 36,
            'multi': false,
            'onUploadError': function(file, errorCode, errorMsg, errorString) {
                console.log('onUploadError', file, errorCode, errorMsg, errorString);
            },
            'onUploadSuccess': function(file, data, response) {
                console.log('onUploadSuccess', file, data, response);
            },
            'swf': '/assets/cms/swf/uploadify.swf',
            'uploader': '<?php echo $uploadPath; ?>',
            'width': 120
        });
    })(jQuery);
</script>
于 2012-11-22T10:37:37.847 に答える
0

S3へのリクエストは、有効な秘密鍵で署名する必要があり、常に認証が含まれている必要があります。理論的にはJavaScriptを使用してクライアント側でこれを行うことができますが、秘密鍵をクライアント側に公開したくない場合は、ヘッダーに署名するためのAjax呼び出しが必要になります。もう1つの問題は、ブラウザの互換性です。最近のすべてのブラウザで利用できる、ファイルスライスを使用して、より大きなファイルのチェックサムを計算する必要があります。

より簡単な方法は、PHPまたはその他のサーバー側スクリプト言語を使用したサーバー側ソリューションです。

于 2012-11-22T10:33:46.973 に答える
0

phpを使用していても、ファイルサイズについて心配する必要はありません。ファイルのアップロードファイルサイズ制限と実行メモリ制限を構成でき、php.inis3のphpライブラリを使用すると作業が軽減されます。このガイドから始めることができます。

于 2012-11-22T10:04:35.897 に答える