繁体   English   中英

无法使用GD库php上传图像

[英]unable to upload an image using gd library php

此php文件从html文件接收数据,用户在该html文件中从其计算机上载图像,一旦单击更新按钮,此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) { switch ($_FILES['uploadfile']['error']) { case UPLOAD_ERR_INI_SIZE: die('The uploaded file exceeds the upload_max_filesize directive' . 'in php.ini'); break; case UPLOAD_ERR_FORM_SIZE: die('The uploaded file exceeds the MAX_FILE_SIZE directive that ' . 'was specified in the HTML form.'); break; case UPLOAD_ERR_PARTIAL: die('The uploaded file was only partially uploaded.'); break; case UPLOAD_ERR_NO_FILE: die('No file was uploaded'); break; case ULOAD_ERR_NO_TMP_DIR: die('The server is missing a temporary folder'); break; case UPLOAD_ERR_CANT_WRITE: die('The Server failed to write the uploaded file to disk'); break; case UPLOAD_ERR_EXTENSION: die('File upload stopped by extension.'); break; } } // retrieve data from created image $image_caption = $_POST['caption']; $image_username = $_POST['username']; $image_date = date('Ym-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 die('The file you uploaded was not a supported filetype'); $ext = '.gif'; break; case IMAGETYPE_JPEG: $image = imagecreatefromjpeg($_FILES['uploadfile']['tmp_name']) or die('The file you uploaded was not a supported filetype'); $ext = '.jpg'; 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 . '")'; $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); break; case IMAGETYPE_JPEG: imagejpeg($image, $dir . '/' . $imagename, 100); break; case IMAGETYPE_PNG: imagepng($image, $dir . '/' . $imagename); 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;"> <table> <tr><td>Image Saved as: </td><td><?php echo $imagename; ?></td></tr> <tr><td>Image Type: </td><td><?php echo $ext; ?></td></tr> <tr><td>Height: </td><td><?php echo $height; ?></td></tr> <tr><td>Width: </td><td><?php echo $width; ?></td></tr> <tr><td>Upload Date: </td><td><?php echo $image_date; ?></td></tr> </table> </body> </html> 

这是页面返回的错误:

警告:imagejpeg():无法打开“ image_php / images / 9.jpg”进行写入:第98行的/var/www/html/php/image_php/check_image.php中没有此类文件或目录

允许上传图像的表格

 <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. </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> 

从PHP手册这里:

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

默认情况下,文件将存储在服务器的默认临时目录中,除非在php.ini中使用upload_tmp_dir指令指定了另一个位置。 可以通过在运行PHP的环境中设置环境变量TMPDIR来更改服务器的默认目录。 在PHP脚本中使用putenv()进行设置将不起作用。 此环境变量也可以用于确保其他操作也可以在上载的文件上进行。

可能您的HTTP服务器没有对temp目录的写权限,或者您的php.ini为没有写权限的目录配置了一个temp dir。 检查他们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM