2013-08-21 89 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文件,您可以使用默認設置進行修改。 –