簡體   English   中英

無法通過PHP + CodeIgniter應用程序將大文件上傳到Amazon S3?

[英]Unable to upload large files to Amazon S3 in a PHP + CodeIgniter application?

我在視圖中有一個帶有窗體的CodeIgniter應用程序。 該表單接受文件,這些文件隨后將被上傳到Amazon S3。 我正在使用此庫與S3對話: https : //github.com/psugand/CodeIgniter-S3 當我上傳小文件時,腳本運行良好。 我最初收到一個錯誤,提示您所請求的操作不允許。 根據您請求的操作不允許錯誤 ,我將問題追溯到CSRF保護,並將CSRF保護設置為false。 現在, 您所請求的操作已被禁止。 已消失,但大文件仍然無法上傳。 文件被上傳,然后頁面閃爍,表格本身清空。 不知道為什么。

我的應用程序在Amazon ElasticBeanstalk 64位PHP機器上運行。 即使在localhost上,我也遇到相同的錯誤。 這是我的代碼:

視圖

    <?php echo form_open_multipart('landing/submit'); ?>
        <div class="form-group">
          <label for="exampleInputName">Name</label>
          <input type="text" class="form-control" id="app_name" placeholder="Name" name="name" required>
        </div>
        <div class="form-group">
          <label for="exampleInputEmail1">E-mail</label>
          <input type="text" class="form-control" id="app_email" placeholder="E-mail" name="email">
        </div>
        <div class="form-group">
          <label for="exampleInputPassword1">PM XML File</label>
          <input type="file" class="form-control" id="app_file" name="file" placeholder="File">
        </div>
        <button type="submit" class="btn btn-block btn-orange btn-Submit" name="submit">SUBMIT</button>
        <small id="mail_msg"></small>
      <?php form_close(); ?>

控制者

public function submit()
{
    if (isset($_POST['submit']))
    {
        $name           = $this->input->post('name');
        $email          = $this->input->post('email');
        $fileName       = $_FILES['file']['name'];
        $fileTempName   = $_FILES['file']['tmp_name'];

        $this->load->library('s3');

        $input  = $this->s3->inputFile($fileTempName);
        $result = $this->s3->putObject(
            $input,
            'pmxmls',
            $name . '_' . $email . '_' . $fileName,
            S3::ACL_PUBLIC_READ,
            array(),
            array("Cache-Control" => "max-age=315360000", "Expires" => gmdate("D, d M Y H:i:s T", strtotime("+5 years"))
        ));

        is_integer($result);

        if ($result == '1')
        {
            @session_start();
            $_SESSION['submit'] = true;
            redirect(base_url());
        }
        else
        {
            echo 'There was an error.';
        }
    }
    else
    {
        redirect(base_url());
    }
}

k10gaurav可能是正確的。

在php.ini中,請上載max_filesize,post_max_size,max_input_time,max_execution ...

保存新值后,請確保重新啟動apache。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM