2010-04-15 95 views
0

我需要上传一个csv文件到服务器。对于较小的文件工作正常,但是当文件是3-6兆,它不起作用。php更大的文件上传问题

$allowedExtensions = array("csv"); 
     foreach ($_FILES as $file) { 
      if ($file['tmp_name'] > '') { 
      if (!in_array(end(explode(".", strtolower($file['name']))), $allowedExtensions)) { 

       die($file['name'].' is an invalid file type!<br/>'. '<a href="javascript:history.go(-1);">'. '&lt;&lt Go Back</a>'); 

      } 
      if (move_uploaded_file($file['tmp_name'], $uploadfile)) { 
        echo "File is valid, and was successfully uploaded.\n"; 
       } else { 
        echo "Possible file upload attack!\n"; 
       } 

      echo "File has been uploaded"; 



      } 

//上传表单

<form name="upload" enctype="multipart/form-data" action="<? echo $_SERVER['php_self'];?>?action=upload_process" method="POST"> 
        <!-- MAX_FILE_SIZE must precede the file input field --> 
        <input type="hidden" name="MAX_FILE_SIZE" value="31457280" /> 
        <!-- Name of input element determines name in $_FILES array --> 
        Send this file: <input name="userfile" type="file" /> 
        <input type="submit" value="Send File" /> 
      </form> 

我也加入了这htaccess的

php_value upload_max_filesize 20M 
php_value post_max_size 20M 
php_value max_execution_time 200 
php_value max_input_time 200 

我在哪里去了?

+0

您没有检查实际值。运行'phpinfo()'来查看它们 – 2010-04-15 11:55:28

+0

如果你做了一个phpinfo,那么max_filesize是什么限制等等?编辑:弹片击败了我。 – Simeon 2010-04-15 11:56:02

+0

如果您使用它发送最大文件大小,并将上传的文件与它进行比较,您将允许任何用户选择最大文件大小。 – alex 2010-04-15 12:12:44

回答

1

$ _FILES ['userfile'] ['error']的值是什么?看看这里:

http://php.net/manual/en/features.file-upload.errors.php

而且,什么这个:

if ($file['tmp_name'] > '') { 

我不认为这是很健康的。

+0

更好的方法可能是'if(file_exists($ file ['tmp_name'])){' – donut 2010-04-15 12:15:53

+0

我得到错误“1”。 PHP ini的价值? – chris 2010-04-15 12:58:34

+0

@donut:更好的是''is_uploaded_file($ file ['tmp_name'])',它有一些额外的脚本颠覆保护。 – 2010-04-15 13:50:59

-1

检查你的php.ini文件,看看那里的upload_max_filesize设置高于3 MB,我不知道.htaccess是否优先于php.ini。

如果我记得正确,debian php5的默认上传限制是2MB,但我不确定你在哪个系统上运行。

如果您创建了一个文件,例如,您也可以检查php值。 info.php将它放在与“问题PHP脚本”相同的目录中。

文件内容应该是这样的 <?php phpinfo(); ?>

这将给你指的是你在目录中所有PHP相关的值,希望它帮助。

0

只是一些建议,你的代码

  • ($file['tmp_name'] > '')应该像(! empty($file['tmp_name']))
  • 呼应“可能的文件上传攻击”不会帮助任何人。如果您认为这是可能的攻击,请将其记录到文件中。
  • 表单动作属性$_SERVER['php_self']应该大写,因为它是常量,即$_SERVER['PHP_SELF']
+0

修改..仍然没有工作 – chris 2010-04-15 12:40:42

0

检查你的Apache错误日志和错误应该在那里?