2013-06-14 2 views
1

Код ниже позволяет назвать и создать новую папку в каталоге «альбомы», а также загрузить изображения в том же каталоге. Можете ли вы рассказать мне, как загружать изображения непосредственно в новую подпапку, которую я создал. Это форма:Как загрузить изображения в только что созданный каталог/подпапку

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" 
    method="POST" enctype="multipart/form-data"> 
Album name : <input type="text" name="textfield" id="textfield"> 
Upload image: <input type="file" name="fileup" /><br/> 
    <input type="submit" name="button" id="button" value="Augsupieladet"> 
</form> 

И код PHP

<?php 
$get_folder = $_POST['textfield']; 
mkdir ("./albums/" . $get_folder, 0777); 
echo "Album created successfully"; 

$uploadpath = ("./albums");  //directory where the images are uploaded now 
$max_size = 2000;   
$allowtype = array('bmp', 'gif', 'jpg', 'jpe', 'png', 'jpeg');   

if(isset($_FILES['fileup']) && strlen($_FILES['fileup']['name']) > 1) { 
$uploadpath = $uploadpath . basename($_FILES['fileup']['name']);  
$sepext = explode('.', strtolower($_FILES['fileup']['name'])); 
$type = end($sepext);  
$err = '';   

if(!in_array($type, $allowtype)) 
$err .= 'Fails: <b>'. $_FILES['fileup']['name']. 'incorrect file type.'; 
if($_FILES['fileup']['size'] > $max_size*1000) 
$err .= 'Max size of image: '. $max_size. ' KB.'; 


if($err == '') { 
if(move_uploaded_file($_FILES['fileup']['tmp_name'], $uploadpath)) { 
echo 'Image: <b>'. basename($_FILES['fileup']['name']). '</b> Upload succesful:'; 
} 
else echo '<b>Upload unsuccesful.</b>'; 
} 
else echo $err; 
} 
?> 
+0

Вау! Будьте осторожны, позволяя пользователю вводить папку: '../../../ lols' – Dale

+0

Я должен добавить, что вы можете сохранить путь в переменной:' $ path = './albums/'. $ get_folder; 'который вы можете использовать позже в скрипте – Dale

+0

Просто добавьте $ get_folder в $ upload_path? – bestprogrammerintheworld

ответ

1

Вы не можете «напрямую» выбрать, где файлы будут загружены в PHP. То, что вы хотите сделать, это «переместить» загруженный файл в нужное место.

<?php 
$get_folder = $_POST['textfield']; 

// you should clean this.. 
$uploadpath = "./albums/" . $get_folder.'/'; 

mkdir ($uploadpath, 0777); 

echo "Album created successfully"; 
// remove the line below. variable was set previously 
//$uploadpath = ("./albums");  
$max_size = 2000;   
$allowtype = array('bmp', 'gif', 'jpg', 'jpe', 'png', 'jpeg');   

if(isset($_FILES['fileup']) && strlen($_FILES['fileup']['name']) > 1) { 
    $uploadpath = $uploadpath . basename($_FILES['fileup']['name']);  
    $sepext = explode('.', strtolower($_FILES['fileup']['name'])); 
    $type = end($sepext);  
    $err = '';   

    if(!in_array($type, $allowtype)) 
     $err .= 'Fails: <b>'. $_FILES['fileup']['name']. 'incorrect file type.'; 
    if($_FILES['fileup']['size'] > $max_size*1000) 
     $err .= 'Max size of image: '. $max_size. ' KB.'; 


    if($err == '') { 
     if(move_uploaded_file($_FILES['fileup']['tmp_name'], $uploadpath)) { 
      echo 'Image: <b>'. basename($_FILES['fileup']['name']). '</b> Upload succesful:'; 
     } 
     else echo '<b>Upload unsuccesful.</b>'; 
    } 
    else echo $err; 
} 
?> 
+0

Изображение все еще находится в каталоге «альбомы», и теперь оно добавляет имя созданной новой подпапки в начале имени загруженного изображения. :/ – Indra

+0

Я обновил образец кода '$ uploadpath =" ./albums/ ". $ get_folder. '/'; ' – user20232359723568423357842364

+0

Yey, это работает! Большое спасибо! :) – Indra