2014-02-02 4 views
0

У меня есть простой загрузчик изображений на PHP, он загружает изображения, но по какой-то причине он добавляет изображение в каталог 'uploads' вместо папки внутри этого каталога.Объединение переменных в строку

Переменная $ uploaddir, кажется, печатает правильную строку, я знаю это, потому что я переименовываю изображение, используя $ uploaddir, и я вижу, что изображение названо правильно с тем же именем, что и папка внутри 'uploads '.

Iv сделал много поисков по строкам и переменным 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

Вы можете просто использовать. Оператор = для конкатенация строк. '$ uploadfile. = basename ($ _ FILES ['userfile'] ['name']);' –

ответ

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']); 
+0

вот оно! Большое спасибо – conor909

+0

@ conor909 Рад помочь ... – Jivan

0

Я думаю, что нужно добавить /

$uploadfile = $uploaddir .'/'. basename($_FILES['userfile']['name']); 
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...'); 
} 
+0

жаль, что я не упоминал, папки созданы. – conor909

+0

Затем сделайте это $ uploaddir = "uploads/{$ site_country} _ {$ site_state} _ {$ site_name} /". $ _ FILES ["file"] ["name"]; if (move_uploaded_file ($ _ FILES ['userfile'] ['tmp_name'], $ uploadfile)) – Hamza

0

Вы отсутствующей обратной косой

$uploaddir = "uploads/{$site_country}_{$site_state}_{$site_name}/"; 

И вы, возможно, потребуется создать этот каталог сначала

mkdir($uploaddir, 0777, true)

Смежные вопросы