2015-05-20 5 views
0

этот файл php получает данные из html-файла, где пользователь загружает изображение со своего компьютера, как только нажимается кнопка обновления, эта страница php возвращает ошибку, в которой указано что нет такого файла или каталога не существуетневозможно загрузить изображение с помощью библиотеки gd php

<?php error_reporting(E_ALL); ini_set('display_errors', 1);?> 
 
<?php 
 
$db = mysql_connect('localhost', 'pippo', 'pluto') or 
 
    die ('Unable to connect. Check your connection parameters.'); 
 
mysql_select_db('moviesite', $db) or die(mysql_error($db)); 
 

 
// current images folder 
 
$dir ='image_php/images'; 
 

 
// make sure the upload succeeded 
 
if ($_FILES['uploadfile']['error'] != UPLOAD_ERR_OK) { 
 
\t switch ($_FILES['uploadfile']['error']) { 
 
\t case UPLOAD_ERR_INI_SIZE: 
 
\t  die('The uploaded file exceeds the upload_max_filesize directive' . 
 
\t \t  'in php.ini'); 
 
\t \t break; 
 
\t case UPLOAD_ERR_FORM_SIZE: 
 
\t  die('The uploaded file exceeds the MAX_FILE_SIZE directive that ' . 
 
\t \t  'was specified in the HTML form.'); 
 
\t \t break; 
 
\t case UPLOAD_ERR_PARTIAL: 
 
\t  die('The uploaded file was only partially uploaded.'); 
 
\t \t break; 
 
\t case UPLOAD_ERR_NO_FILE: 
 
\t  die('No file was uploaded'); 
 
\t \t break; 
 
\t case ULOAD_ERR_NO_TMP_DIR: 
 
\t  die('The server is missing a temporary folder'); 
 
\t \t break; 
 
\t case UPLOAD_ERR_CANT_WRITE: 
 
\t  die('The Server failed to write the uploaded file to disk'); 
 
\t \t break; 
 
\t case UPLOAD_ERR_EXTENSION: 
 
\t  die('File upload stopped by extension.'); 
 
\t \t break; 
 
\t } 
 
} 
 

 
// retrieve data from created image 
 
$image_caption = $_POST['caption']; 
 
$image_username = $_POST['username']; 
 
$image_date = date('Y-m-d'); 
 
list($width, $height, $type, $attr) = 
 
    getimagesize($_FILES['uploadfile']['tmp_name']); 
 

 
// make sure the uploaded file is a supported image 
 
switch ($type) { 
 
case IMAGETYPE_GIF: 
 
    $image = imagecreatefromgif($_FILES['uploadfile']['tmp_name']) or 
 
\t  die('The file you uploaded was not a supported filetype'); 
 
\t $ext = '.gif'; 
 
\t break; 
 
case IMAGETYPE_JPEG: 
 
    $image = imagecreatefromjpeg($_FILES['uploadfile']['tmp_name']) or 
 
\t  die('The file you uploaded was not a supported filetype'); 
 
\t $ext = '.jpg'; 
 
\t break; 
 
case IMAGETYPE_PNG: 
 
    $image = imagecreatefrompng($_FILES['uploadfile']['tmp_name']) or 
 
     die('THe file you uploaded was not a supported filetype'); 
 
    $ext = '.png'; 
 
    break; 
 
default: 
 
    die('The file you uploaded was not a supported filetype'); 
 
} 
 

 
//insert information into image table 
 
$query = 'INSERT INTO images 
 
    (image_caption, image_username, image_date) 
 
VALUES 
 
    ("' . $image_caption . '", "' . $image_username . '", "' . $image_date . 
 
\t '")'; 
 
$result = mysql_query($query, $db) or die(mysql_error($db)); 
 

 
//retrieve image value 
 
$last_id = mysql_insert_id(); 
 

 
// use id as image name 
 
//per assicurarsi che l'immagine non sovrascriva altre immagini esistenti 
 
$imagename = $last_id . $ext; 
 

 
// update image table adding the image final name 
 
$query = 'UPDATE images 
 
    SET image_filename = "' . $imagename . '" 
 
    WHERE image_id = ' . $last_id; 
 
$result = mysql_query($query, $db) or die (mysql_error($db)); 
 

 
// save image 
 
switch ($type) { 
 
case IMAGETYPE_GIF: 
 
    imagegif($image, $dir . '/' . $imagename); 
 
\t break; 
 
case IMAGETYPE_JPEG: 
 
    imagejpeg($image, $dir . '/' . $imagename, 100); 
 
\t break; 
 
case IMAGETYPE_PNG: 
 
    imagepng($image, $dir . '/' . $imagename); 
 
\t break; 
 
} 
 
imagedestroy($image); 
 
?> 
 
<html> 
 
    <head> 
 
    <title>Here is your pic!</title> 
 
    </head> 
 
<body> 
 
    <h1>So how does it feel to be famous?</h1> 
 
    <p>Here is the picture you just uploaded to our servers:</p> 
 
    <img src="images/<?php echo $imagename; ?>" style="float:left;"> 
 
\t <table> 
 
\t <tr><td>Image Saved as: </td><td><?php echo $imagename; ?></td></tr> 
 
\t <tr><td>Image Type: </td><td><?php echo $ext; ?></td></tr> 
 
\t <tr><td>Height: </td><td><?php echo $height; ?></td></tr> 
 
\t <tr><td>Width: </td><td><?php echo $width; ?></td></tr> 
 
\t <tr><td>Upload Date: </td><td><?php echo $image_date; ?></td></tr> 
 
    </table> 
 
</body> 
 
</html>

это ошибка, которая возвращается страницы:

Предупреждение: imagejpeg(): не удается открыть «image_php/изображения/9.jpg 'для написания: нет таких f Ile или каталог в /var/www/html/php/image_php/check_image.php на линии 98

форма, которая позволяет загружать изображения

<html> 
 
<head> 
 
<title>Upload your pic to our site!</title> 
 
<style type="text/css"> 
 
<!-- 
 
td {vertical-align: top;} 
 
--> 
 
</style> 
 
</head> 
 
<body> 
 
    <form action="check_image.php" method="post" enctype="multipart/form-data"> 
 
    <table> 
 
    <tr> 
 
    <td>Your Username</td> 
 
    <td><input type="text" name="username" /></td> 
 
    </tr> 
 
    <td>Upload Image*</td> 
 
    <td><input type="file" name="uploadfile" /></td> 
 
    </tr><tr> 
 
    <td colspan="2"> 
 
    <small><em>* Acceptable image formats include: GIF, JPG/JPEG and PNG. 
 
\t </em></small> 
 
    </td> 
 
    </tr><tr> 
 
    <td>Image Caption<br/> 
 
    </td> 
 
    <td><input type="text" name="caption" /></td> 
 
    </tr><tr> 
 
    <td colspan="2" style="text-align: center;"> 
 
    <input type="submit" name="submit" value="Upload"/> 
 
    </td> 
 
    </tr> 
 
    </table> 
 
    </form> 
 
</body> 
 
</html>

+0

действительный enctype требуется при работе с файлами, вы не используете его? –

+0

yes Я использую действительный enctype в html-файле, который позволяет загружать изображения – Riccardo

+0

возьмите его с приведенным ниже ответом, затем добавьте –

ответ

1

От PHP инструкции здесь:

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

«файлы будут по умолчанию сохраняются по умолчанию в стемы сервера каталог, если другое имя не указано с директивой upload_tmp_dir в php.ini. Каталог по умолчанию сервера можно изменить, установив переменную окружения TMPDIR в среду, в которой работает PHP. Установка его с помощью putenv() из скрипта PHP не будет работать. Эта переменная среды также может использоваться, чтобы убедиться, что другие операции также работают с загруженными файлами ».

Возможно, ваш сервер http не имеет разрешения на запись для временного dir, или ваш php.ini имеет временный dir, настроенный для dir, где у него нет разрешения на запись. Проверьте их.

+0

следует создать временную папку? – Riccardo

+0

Нет. Вы должны проверить свой php.ini и посмотреть, какой там параметр temp dir установлен. Затем вы проверяете, имеет ли пользователь вашего сервера права на запись в этот каталог. –

+0

Я использую веб-сервер, который настроен на среду разработки своего рода зеркального сервера, который я создал, это не производственный сервер – Riccardo

Смежные вопросы