4

Amazon S3 バケットにファイルをアップロードしようとしています。私の友人は過去に私たちのサイトでこれを機能させていましたが、1年後には機能しなくなり、何が問題なのかわかりません. Geoff gaudreaultによって開発されたS3 PHP ライブラリを使用しています。

このライブラリは私にはかなり単純に見えますが、実際には 1 つの重要な機能があるように見えます: putObject().

残念ながら、ゲートから出ることさえできません。次のエラー メッセージが表示されます。 Error 324 (net::ERR_EMPTY_RESPONSE): The server closed the connection without sending any data.

アップロード フォームの codeigniter PHP は次のactionとおりです。

    function s3(){

    $config['upload_path'] = $_SERVER["DOCUMENT_ROOT"].'/temp/';
    $config['allowed_types'] = 'gif|jpg|png';
    $config['max_size'] = '1000000';
    $config['max_width']  = '1024000';
    $config['max_height']  = '768000';

    $this->load->library('upload', $config);

    if ( ! $this->upload->do_upload())
    {
        $error = array('error' => $this->upload->display_errors());

        print_r($error);
        echo 'failure';
    }
    else
    {
       $data = array('upload_data' => $this->upload->data()); 
        $fn = $data['file_name'];
        $type = substr($fn, strrpos($fn, '.') + 1);

    $this->load->library('s3');
    $temp_file_path = $_SERVER["DOCUMENT_ROOT"]."/temp/" . $data['file_name'];
    $contents = read_file($temp_file_path); // will this blow up or timeout for large files?! 
    $newFileName = uniqid().".".substr($temp_file_path, strrpos($temp_file_path, '.') + 1);
     $contentPath = "mysite.com/Images"; 

    $this->s3->putObject($newFileName, $contents, $contentPath, 'private', $type);
    echo 'success';
    }
}

誰か考えがありますか?

4

2 に答える 2

3

別の S3 PHP ライブラリ(S3.php とも呼ばれます)に切り替えました。これは、この非常に優れた Netuts チュートリアル ソース コードの一部です。

AWS キーとバケット名をデモの page.php ファイルに差し込むだけで、2 分ほどでバケットにアップロードできました。したがって、このチュートリアルは非常に簡単です。とてもわくわくする!

于 2012-04-20T15:42:11.513 に答える