我有一个文件类型输入,我想上传图像。我重写了5次代码,认为我犯了一个错误但到目前为止我看不到它。因为它不起作用。 HTML代码
<form method="post" enctype="multipart/form-data">
<input type="file" name="primaryimg" id="primaryimg"></br>
<input type="submit" value="Sell!" name="uploaditem" />
</form>
这是我的PHP代码
if(isset($_POST['uploaditem'])){
$filebasename = basename($_FILES['primaryimg']['name']);
$ext = strtolower(substr($filebasename, strrpos($filebasename, '.') + 1));
if (($ext == "jpg" || $ext == "gif" || $ext == "png" || $ext == "jpeg") && ($_FILES['primaryimg']['type'] == "image/jpg" || $_FILES['primaryimg']['type'] == "image/gif" || $_FILES['primaryimg']['type'] == "image/png" || $_FILES['primaryimg']['type'] == "image/jpeg")){
$desired_dir="img/products/sellers/$user/$itemname/";
$file_name=$_files['primaryimg']['name'];
if (file_exists($desired_dir . $file_name)){
$errormsg="Filename already exists.";
}else{
move_uploaded_file($_FILES['primaryimg']['tmp_name'], $desired_dir . $file_name);
$errormsg = $file_name . "successfully uploaded.";
}
}else{
$errormsg = "Error! File is not a valid jpg, gif, png or jpeg";
}
}
所以我试着回应$filebasename
basename($_FILES)
所在的$lol=$_POST['primaryimg'];
来看看它获得了什么价值。显然它是空的。我做了一个$lol
和echo'd $files
,它确实显示了项目名称。所以由于某种原因,move_upload_file
保持为空,file_upload
也不起作用。
将错误报告放在上面我发现以下错误
注意:第21行的D:\ Dropbox \ UoC \ phphosting \ buyathing \ sellanitem.php中的未定义索引:primaryimg
在下面显示的错误之后,图像不是jpg / jpeg ...它应该打印filebasename,因为你可以看到它是EMPTY。
我去了php.ini,看看jpg
是否打开了。我尝试上传的图像是550k,但我的最大文件大小是2M所以这也不是问题。
我一直在谷歌搜索5小时,但没有运气。因此,如果有人在我失去理智之前可以帮助我会很棒:')
提前谢谢。
答案 0 :(得分:0)
我认为您没有创建目录,当您移动文件时,应该存在一个文件夹。首先您应该为此路径img/products/sellers/".$user."/".$itemname."/
创建一个目录。
使用php基本功能mkdir()
。
Here您还可以找到更多信息。然后尝试在特定的loaction中上传图片。我希望这有助于否则评论,我会调查它。