我在PHP中有一个简单的图像上传器,它正在上传图像,但由于某种原因,它将图像添加到'uploads'目录而不是该目录中的文件夹。
变量$ uploaddir似乎正在打印正确的字符串,我知道这是因为我使用$ uploaddir重新命名图像,我可以看到图像的名称与“uploads”中的文件夹名称相同夹。
我对URL字符串和变量进行了大量搜索,但无法解决这个问题。这是我的代码:
$uploaddir = "uploads/{$site_country}_{$site_state}_{$site_name}";
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo "<p>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Upload failed";
}
echo "</p>";
答案 0 :(得分:0)
问题是您正在使用拼写错误构建文件路径。
假设您的文件名是hello.png,那么结果$uploadfile
目前是:
上传/ usa_ny_foohello.png
您需要:
上传/ usa_ny_foo / hello.png
那么,在$ uploaddir的末尾添加/
呢?
$uploaddir = "uploads/{$site_country}_{$site_state}_{$site_name}/";
或以更恰当的方式,您可以尝试这样做:
$uploaddir = "uploads/{$site_country}_{$site_state}_{$site_name}";
$uploadfile = $uploaddir . '/' . basename($_FILES['userfile']['name']);
答案 1 :(得分:0)
我认为您需要添加/
$uploadfile = $uploaddir .'/'. basename($_FILES['userfile']['name']);
答案 2 :(得分:0)
您需要先创建一个目录
mkdir('uploads/'.$directoryname, 0777, true);
例如
$uploaddir = "uploads/{$site_country}_{$site_state}_{$site_name}/";
if(!is_dir($uploaddir))
{
if (!mkdir($uploaddir, 0777, true)) {
die('Failed to create folders...');
}
答案 3 :(得分:0)
你缺少反斜杠
$uploaddir = "uploads/{$site_country}_{$site_state}_{$site_name}/";
您可能需要先通过
创建该目录 mkdir($uploaddir, 0777, true)