在下面的代码中,我尝试上传图片但显示以下错误。
警告:move_uploaded_file():无法在D:\ Work \ xampp中将'D:\ Work \ xampp \ tmp \ php8A66.tmp'移动到'images \ uploads \ slider \'1413996794 _ :: 1.jpeg''第35行的\ htdocs \ project \ aad \ slider.php
我认为问题出在名为move_uploaded_file()的函数中; php功能。
目录应保存该项目文件夹中的图像。
我正试图解决这个问题我应该采取什么步骤?
if(isset($_POST['upload'])){
$imageName = $_POST['imageName'];
$imageFile = $_FILES['imageFile']['tmp_name'];
$imageSize = $_FILES['imageFile']['size'];
$imageType = $_FILES['imageFile']['type'];
$ipAddress = $_SERVER['REMOTE_ADDR'];
$time = time();
if($imageType == 'image/gif'){
$ext = '.gif';
}elseif($imageType == 'image/png'){
$ext = '.png';
}elseif($imageType == 'image/jpg'){
$ext = '.jpg';
}elseif($imageType == 'image/jpeg'){
$ext = '.jpeg';
}
$imageFileName = $time.'_'.$ipAddress.$ext;
//$dir = "images\uploads\slider\$imageFileName";
$dir = "images\uploads\slider\".$imageFileName;
if($imageName !== ''){
if($imageSize < '200000000'){
if($imageType == 'image/gif' || $imageType == 'image/png' || $imageType == 'image/jpeg' || $imageType == 'image/jpg'){
if(move_uploaded_file($imageFile, $dir)){
$query = "INSERT INTO slider VALUES('', '$imageName', '$imageFileName', '$imageSize', '$dir')";
$mysql_query = mysql_query($query);
if($mysql_query){
$msg = 'Image Uploaded Successfully';
}else{
$msg = 'Image Uploading Failed.';
}
}else{
$msg = 'Error while uploading file, Please try again.';
}
}else{
$msg = 'Image type should be .gif, .png, .jpg or .jpeg.';
}
}else{
$msg = 'Image size is too large.';
}
}else{
$msg = 'Image name cannot be empty.';
}
}
答案 0 :(得分:0)
阅读您的错误消息。
您正尝试将文件保存到此位置
images\uploads\slider\'1413996794_::1.jpeg
您当前的工作树中是否存在D:\Work\xampp\htdocs\project\aad\images\uploads\slider\
?
此外,您的文件名中包含'
和2 :
个,这些文件名无效。
编辑
首先,您必须从IP地址中删除:
,以便它们不会被带入文件名。
其次,我觉得您在使用'
时遇到问题,因为您没有正确转义\
。
试试这个:
// Remove any instance of ':'
$imageFileName = str_replace(":", "", $imageFileName);
// Set the directory, escaping backslashes
$dir = "images\\uploads\\slider\\" . $imageFileName;