2013-08-21 39 views
0

这是我的上传系统的代码,它上传文件并将信息输入到mysql中,小文件可以正常工作,但大文件不会出现在ftp中,它们会创建一个mysql条目,但条目为空大文件不会上传

<?php 
$count = 0; 
if ($_SERVER['REQUEST_METHOD'] == 'POST'){ 
    foreach ($_FILES['files']['name'] as $i => $name) { 
     if (strlen($_FILES['files']['name'][$i]) > 1) { 
      if (move_uploaded_file($_FILES['files']['tmp_name'][$i], 'upload/'.$name)) { 
       $count++; 
      } 
     } 
    } 
} 
?> 

<?php 
$link = mysql_connect('server', 'user', 'pass'); 
if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 
mysql_select_db(database); 

$title = $_POST['title']; 
$path= $name; 
$description = $_POST['description']; 

$sql = "INSERT INTO `videos` (`id` , `title` , `path` , `description`) 
VALUES (
NULL , '$title', '$path', '$description' 
);"; 
$result=mysql_query($sql); 
if(! $result) 
{ 
die('Could not update database: ' . mysql_error()); 
} 
echo "Uploaded successfully\n"; 
mysql_close(); 
?> 

<body> 
    <div class="wrap"> 

<form action="upload_script.php" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
      <form method="post" enctype="multipart/form-data"> 



       <input type="file" name="files[]" id="files" multiple directory="" webkitdirectory="" mozdirectory=""> 



<INPUT TYPE = "Text" VALUE ="title" NAME = "title"> 
<textarea name="description">descrtiption</textarea> 
       <input class="button" type="submit" value="Upload" /> 
     </form> 

    </div> 
    </body> 
</html> 
+2

打开你的错误,你看到了吗?可能与最大上传大小有关。 – putvande

回答

0

at Netfirms PHP_Upload的限制默认设置为20MB!

尝试添加下列到你的.htaccess如果创建类似correpsonding值的php.ini不起作用:

php_value post_max_size 100M 
php_value upload_max_filesize 100M 
php_value memory_limit 64M 

不能保证他们会是一个神奇的修复;但是,这是另一种注入php设置的方式。只有当您从G1迁移出现超时问题时才使用最后一个 - 否则,在共享主机上,它不会被完全微笑。

+0

这是我的.htaccess我把代码放在哪里? 选项+了FollowSymLinks <文件的.htaccess> 为了允许,拒绝 从所有 RewriteEngine叙述在 的RewriteCond%{REQUEST_FILENAME}!-f 重写规则^([^ \否认。 ] +?)\ /?$ $ 1.php [NC,L]

+0

很高兴它解决了您的问题:)。 –

2

您应该检查你的php.ini的upload_max_filesize。 你也看到任何错误?

没有足够的评论声誉,对不起。

编辑:如果您由托管解决方案托管,那么您应该无法修改此参数。

+0

我没有一个php.ini 我使用netfirms进行托管,是否在控制面板中的某处? –

0

你的问题很可能是有限的上传大小,因为你的代码只是假设什么都不可能会失败,你永远不会看到PHP可以显示给你的错误消息。

在最低限度,你应该有类似

if ($_FILES['name']['error'] !== UPLOAD_ERR_OK) { 
    die("Upload failed with error code " . $_FILES['name']['error']); 
} 

既然你显然做多文件上传,你必须去国防部这个来处理,但你需要这样的事情。

的错误代码定义如下:http://www.php.net/manual/en/features.file-upload.errors.php

你的数据库代码也容易受到SQL注入式攻击,以及您的实际上传移动代码服务器对外开放完整的远程妥协。总之,你基本上在你的服务器上挂着一个“踢我”标志。

0

您可以将在脚本运行的同一文件夹中的php.ini,并添加以下行:

upload_max_filesize = 100M 
post_max_size = 100M 
memory_limit = 64M 
max_input_time = 0 

0 max_input_time设置值是指在上传过程中没有超时。

理想情况下,您希望从系统复制原始php.ini并放入根目录,并递归应用该文件以通过网站应用相同的设置。

要递归设置php.ini,您必须通过.htaccess文件在服务器中设置环境变量(setenv)。

+0

某些托管公司会为您提供php.ini文件,您可以使用默认设置进行修改。 –