在以下代码中,我正在尝试将图像上传到服务器。服务器上有一个文件夹'images'。无论何时我点击“确定”按钮......它都会出现错误“上传文件时出现问题”...我的代码中的问题在哪里?
HTML -----------------------------------------
<form method="post" action="newproduct.php" enctype="multipart/form-data">
Item Image:<input type="file" name= "photo" size="40" />
Description:<textarea name="description" cols="40" rows="1"></textarea>
<input name="submit" type="submit" value = "Submit" />
</form>
php-------------------------------------------------------
$target = "images/";
$target = $target . basename( $_FILES['photo']['name']);
$pic=($_FILES['photo']['name']);
$description =$_POST["description"];
//checking for empty values
if (empty($pic) || empty($description))
{
echo "Please enter all field values.";
}
else
{
//Connecting to database server
//Connecting to database
//INSERT Query
$SQLstring = "INSERT INTO items VALUES(null,'$pic' ,'$description')";
$QueryResult = @mysqli_query($DBConnect, $SQLstring)
or die ("<p> Unable to execute the query. </p>".
"<p> Error code " . mysqli_errno($DBConnect) . ":" . mysqli_error($DBConnect))."</p>";
if(move_uploaded_file($_FILES['photo']['name'], $target))
{
echo "The file has been added to the directory";
}
else
{
echo "Sorry, there was a problem uploading your file.";
}
mysqli_close($DBConnect);
}
?>
答案 0 :(得分:0)
你不能这样做......你不会在Javascript中更新像这样的照片......(用ajax ..) 它不会像那样......
但是......你可以假装这个......
你必须以某种方式提交该帖子......
您有多种解决方案:使用闪存假冒上传ajax或iframe ..
你也可以使用jQuery ..他会为你做所有的事情..
以下是一些演示&amp;下载链接:
如果要移动上传的文件,则必须使用新名称移动“tmp_name”..例如
if (!move_uploaded_file($_FILES['photo']['tmp_name'], $path.$_FILES['photo']['name']))
echo 'CANNOT MOVE {'.$_FILES['photo']['name'].'}' . PHP_EOL;
当你上传你的文件时,apache会处理它,默认情况下是/ tmp(如果你使用linux ......我不知道在windows的情况下)..
PS:对于你的脚本的性能,你应该使用''而不是“”来表示字符串...当你使用“”PHP正在检查每个“”(字符串)变量==更多操作要做...和''是跳过
答案 1 :(得分:0)
images文件夹需要拥有777权限。默认情况下,权限为655,并且PHP没有权限将文件上传/移动/复制到当前文件夹之外(子目录计为不同的文件夹)