2014-07-19 94 views
0

我已經使用本教程構建圖片上傳器。圖片上傳,無法識別文件擴展名

http://www.codeforest.net/upload-crop-and-resize-images-with-php

這使用該庫

https://gist.github.com/philBrown/880506/download#

然而,當過我通過表單傳遞一個文件給它,它總是失敗的最後一個IF語句(請上傳圖片)

下面是代碼:

<?php 
require_once(dirname(__FILE__).'/../config.php'); 
require_once(dirname(__FILE__).'/ImageManipulator.php'); 

if ($_FILES['fileToUpload']['error'] > 0) { 
    echo "Error: " . $_FILES['fileToUpload']['error'] . "<br />"; 
} else { 
    // array of valid extensions 
    $validExtensions = array('.jpg', '.jpeg', '.gif', '.png', '.JPG', '.JPEG', '.PNG', '.GIF', '.bmp'); 
    // get extension of the uploaded file 
    $fileExtension = strrchr($_FILES['fileToUpload']['name'], "."); 
    // check if file Extension is on the list of allowed ones 
    if (in_array($fileExtension, $validExtensions)) { 
     $newNamePrefix = time() . '_'; 
     $manipulator = new ImageManipulator($_FILES['fileToUpload']['tmp_name']); 
     $width = $manipulator->getWidth(); 
     $height = $manipulator->getHeight(); 
     $centreX = round($width/2); 
     $centreY = round($height/2); 
     // our dimensions will be 80by80 
     $x1 = $centreX - 40; // 80 
     $y1 = $centreY - 40; // 80 

     $x2 = $centreX + 40; // 80 
     $y2 = $centreY + 40; // 80 

     // center cropping to 80by80 
     $newImage = $manipulator->crop($x1, $y1, $x2, $y2); 
     // saving file to uploads folder 
     $manipulator->save('/images/avatars/uploaded/' . $newNamePrefix . $_FILES['fileToUpload']['name']); 
     echo 'Done ...'; 
    } else { 
     echo 'You must upload an image...'; 
    } 
} 
?> 

這裏是表格。

<h4>Change Avatar</h4> 
    <form enctype="multipart/form-data" method="post" action="/lib/uploadimage.php"><table class="table table-striped"> 
    <tr><td>Please choose a file:</td><td><input type="file" name="fileToUpload" id="fileToUpload" /> 
    <tr><td colspan="2"><input type="submit" value="Upload"></td></tr> 
    </table></form> 

我打算一旦我有這個工作,將URL插入數據庫。

我假設它在事物的上傳方面失敗,但是apache日誌不會給我任何錯誤,並且該文件夾也有757個權限。

任何想法爲什麼這是失敗?

編輯:通過Apache的錯誤是

log:[Sat Jul 19 20:48:51 2014] [error] [client 82.46.57.58] PHP Notice: Undefined index: fileToUpload in /var/SITE/lib/uploadimage.php on line 5, referer: SITE/index.php 

編輯:進一步挖掘,這似乎是一個權限問題

SITE:[Sat Jul 19 21:31:58 2014] [error] [client 82.46.57.58] PHP 2. ImageManipulator->save() /SITE/lib/uploadimage.php:30, referer: SITE/index.php 
SITE:[Sat Jul 19 21:31:58 2014] [error] [client 82.46.57.58] PHP 3. mkdir() /SITE/lib/ImageManipulator.php:222, referer: SITE/index.php 
SITE:[Sat Jul 19 21:31:58 2014] [error] [client 82.46.57.58] PHP Fatal error: Uncaught exception 'RuntimeException' with message 'Error creating directory /images/avatars/uploaded' in /SITE/lib/ImageManipulator.php:223\nStack trace:\n#0 /SITE/lib/uploadimage.php(30): ImageManipulator->save('/images/avatars...')\n#1 {main}\n thrown in /SITE/lib/ImageManipulator.php on line 223, referer: SITE/index.php 

回答

0

它是基於許可,並在圖像目錄中的一個小錯誤。

它應該是../images,並且文件夾需要由www-data擁有。