2015-12-07 101 views
-1

我有一個函數,假設從POST請求中獲得圖像文件。我使用image_moo作爲外部庫在保存前調整圖像大小。用PHP使用Image_moo上傳文件

這裏是我的功能

$dest = $_SERVER['DOCUMENT_ROOT'] . '/refundstylesheet/uploads/images/' . $_FILES['upfile']['name']; 
$temp_file = $_FILES['upfile']['tmp_name']; 

$this->image_moo->load($temp_file)->resize(350,350)->save($dest, TRUE); 

我沒有得到任何錯誤信息,它根本不保存在服務器上的圖像。

回聲$ DEST:** /var/www/html/refundstylesheet/uploads/images/image.png
回聲$ temp_file:**的/ tmp/phpFIQp6S

我做了所有必要的verifications與上傳文件和達到該功能。

+0

'dest'應該是'$ dest' –

+0

* 「我沒有得到任何錯誤消息」 * - https://ellislab.com/codeigniter/user-guide/general/errors.html --- HTTP: //php.net/manual/en/function.error-reporting.php –

+0

這只是粘貼代碼時的一個錯誤。但在我的原始源代碼是正確的。 – Wellyngton

回答

1

我解決了安裝php-gd擴展的問題。 Ronny的評論幫助了我。由於image_moo庫做了一些圖像編輯,它需要這個依賴關係。您可以安裝這種依賴只是執行命令波紋管(Linux版)

apt-get install php5-gd 

檢查是否已安裝了的phpinfo(),並重新啓動Apache。

0

必須有一個錯誤

注意:使用未定義的常量dest的

也許笨處理這種不同

應更換此:

$this->image_moo->load($temp_file)->resize(350,350)->save(dest, TRUE); 

與此:

$this->image_moo->load($temp_file)->resize(350,350)->save($dest, TRUE); 

您已經定義的變量$dest但您嘗試使用一個未定義的constantdest

+0

對不起,這只是一個錯誤粘貼的代碼。我的代碼是正確的。我沒有得到任何錯誤。 – Wellyngton

+2

然後開始檢查返回值。你有很多鏈接代碼取決於成功。在處理外部資源時決不會取得成功。 –

+0

所有這些驗證http://php.net/manual/en/features.file-upload.php – Wellyngton

0

錯別字:

$temp_file = $_FILES['upfile']['temp_name']; 
            ^^^^ 

應該是tmp_name。對於一些明亮的火花來說,試圖通過從一個單詞中刪除一個元音來拯救宇宙,但卻忽視了另一個元音這樣做。

加上,除非你沒有顯示它,你只是假設上傳成功。首先你要做的就是檢查['error']參數。

+0

這只是粘貼代碼時的錯誤。但在我的原始源代碼是正確的。在達到此功能之前,我做了所有必要的驗證。 – Wellyngton

0

代碼中有許多錯誤。

  1. 應該$_FILES['upfile']['tmp_name'](不是 '臨時',而是 'TMP')
  2. ->save(dest, TRUE)應該->save($dest, TRUE)

另外:如果你想要得到的錯誤信息,把這個在你的PHP的頂部文件:

ini_set('display_errors', 'on'); 
error_reporting(E_ALL); 
+0

對不起,我在這裏鍵入代碼,沒有'複製和過去'這就是爲什麼錯誤。試圖修復。但那不是原因。 – Wellyngton

+0

你需要仔細檢查'$ FILES'錯誤的語法。缺少下劃線。 –

+0

但即使在原文中也是正確的。沒有編輯這部分$ temp_file = $ _FILES ['upfile'] ['tmp_name']; – Wellyngton