2013-03-16 72 views
0

我可以毫無問題地上傳小文件。當我嘗試使用150MB文件時,它意外停止。以下是我的HTML文件:使用PHP和Ajax進行文件上傳

<html> 
    <body> 
    <form method="post" enctype="multipart/form-data" class="form-horizontal" id="form_upload"> 
     <div class="control-group"> 
     <label class="control-label muted">IMG</label> 
     <div class="controls"> 
      <input type="file" id="img" name="img" /> 
     </div> 
     </div> 
     <div class="control-group"> 
     <label class="control-label muted">MD5</label> 
     <div class="controls"> 
      <input type="file" id="md5" name="md5" /> 
     </div> 
     </div> 
    </form> 
    <div class="progress"> 
     <div class="bar"></div> 
     <div class="percent"></div> 
    </div> 
    </body> 
</html> 

而以下是我的Ajax處理程序:我使用jQuery表單提交插件。

uploadFirmware:function(){ 
    var bar = $('.bar'); 
    var percent = $('.percent'); 
    self = this; 
    var options = { 
    beforeSend: function() { 
     var percentVal = '0%'; 
     bar.width(percentVal) 
     percent.html(percentVal); 
    }, 
    uploadProgress: function(event, position, total, percentComplete) { 
     var percentVal = percentComplete + '%'; 
     bar.width(percentVal) 
     percent.html(percentVal); 
    }, 
    complete: function(data) { 
     console.log(data); 
     self.showStatusMsg(1,"<b>Firmware Upload: </b> File Upload successfully"); 
    }, 
    url: '/cav_firmware/api', 
    iframe: false 
    }; 
    $("#form_upload").ajaxSubmit(options); 
    return false; 
} 

最後這是我的PHP代碼。我使用CodeIgniter,但我沒有在我的代碼中使用它,只是一個經典的PHP腳本。

public function api_post(){ 
    $filea = $_FILES['img']; 
    $fileb = $_FILES['md5']; 
    if(move_uploaded_file($filea['tmp_name'], '/home/sreeni/upload/'.$filea['name']) && move_uploaded_file($fileb['tmp_name'], '/home/sreeni/upload/'.$fileb['name'])){ 
    echo "Success fully upload files"; 
    } else { 
    echo "File upload failed."; 
    } 
} 

這一切都很好。我的問題只是上傳一個150 MB的文件。我收到以下錯誤,當我嘗試上載我的MD5和IMG文件:

<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;"> 
    <h4>A PHP Error was encountered</h4> 
    <p>Severity: Notice</p> 
    <p>Message: Undefined index: img</p> 
    <p>Filename: controllers/cav_firmware.php</p> 
    <p>Line Number: 30</p> 
</div> 
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;"> 
    <h4>A PHP Error was encountered</h4> 
    <p>Severity: Notice</p> 
    <p>Message: Undefined index: md5</p> 
    <p>Filename: controllers/cav_firmware.php</p> 
    <p>Line Number: 31</p> 
</div>File upload failed. 

/etc/php5/apache2/php.ini改變了我的php.ini到最大尺寸,200 MB(內存限制)。

我在這裏做錯了什麼?我需要指定我的文件是MD5和IMG(固件映像文件)嗎?任何幫助?

+2

您需要在php.ini中設置upload_max_filesize和post_max_size的值。上傳文件的最大允許大小。 upload_max_filesize = 200M ;必須大於或等於upload_max_filesize post_max_size = 200M – 2013-03-16 07:33:45

+0

好。 – 2013-03-16 07:34:44

+0

@SRquery,請閱讀問題...他已經做了 – Amir 2013-03-16 07:35:55

回答

2

檢查php.ini中腳本的最大執行時間 默認時間是30秒。

+0

max_execution_time = 30000; max_input_time = 60000; memory_limit = 200M; post_max_size = 200M; – 2013-03-16 08:09:57

+0

使執行時間更大,比如更大的上傳300000 – mukund 2013-03-18 05:30:35