2014-11-11 3 views
1

Помощь, Ive посмотрел на другие ответы на эту проблему, но я не могу решить эту проблему.Невозможно переместить загруженный файл для загрузки изображения php

Я хочу загрузить изображение в каталог "uploaded_files /". $ User_id);

Однако его дает мне ошибку:

** move_uploaded_file() [function.move загруженным-файл]: Второй аргумент для копирования() функция не может быть каталогом в/главная/dawn01/public_html/wp-content/wordpresstheme/двадцатьten/new_uploads.php on line 27

PHP Предупреждение: move_uploaded_file() [function.move-uploaded-file]: Невозможно переместить '/ tmp/phpkh4xzn' в 'uploaded_files/76' в /home/dawn01/public_html/wp-content/themes/wordpresstheme/new_uploads.php on line 27 **

Это мой код:

session_start(); 
$_SESSION['user_no']; 
$startuplistingno = $_POST['startup_listing_no']; 
//creating directory within uploaded files called user id 

$dir = 'uploaded_files/'. $_SESSION['user_no']; 
if (!file_exists($dir)) { 
    mkdir ($dir, 0744); 

    $temp = explode(".",$_FILES["file"]["name"]); 
    $newfilename = $_SESSION['user_no']; 
    move_uploaded_file($_FILES["file"]["tmp_name"], 
         "uploaded_files/" . $newfilename); 
} 
+0

'mkdir ($ dir, 0744);' вероятно, не то, что вы хотите. Каталоги в * NIX должны выполнять разрешения для правильной работы. Админы обычно используют '0755' для общего каталога (только владелец имеет права на запись, все могут читать) или' 0700' для частного каталога (только владелец имеет права на запись, никто не может читать). – amphetamachine

+0

@amphetamachine, я полностью согласен, я даже упоминал об этом в ответе. – robbmj

ответ

1

Позволяет изучить код

$dir = 'uploaded_files/'. $_SESSION['user_no']; 
// create a directory like uploaded_files/12345 
if (!file_exists($dir)) { 
    // read permissions on a directory without execute permissions 
    // are kinda useless 700 or 755 makes more sense. 
    mkdir ($dir, 0744); 

    $newfilename = $_SESSION['user_no']; 
    // now here we are attempting to create a new file called 
    // uploaded_files/12345 
    // But this is an already existing directory (we just created it) 
    move_uploaded_file($_FILES["file"]["tmp_name"], 
         "uploaded_files/" . $newfilename); 
} 

Позволяет исправить код:

$dir = 'uploaded_files/'. $_SESSION['user_no']; 
if (!file_exists($dir)) { 
    if (!mkdir($dir, 0700)) { 
     http_send_status(500); 
     die("Could not upload file"); 
    } 
}  
$tmp_name = $_FILES["file"]["tmp_name"]; 
// create a path with file name like: 
// uploaded_files/12345/730e109bd7a8a32b1cb9d9a09aa2325d2430587ddbc0c38bad911525.ext 
$newfilename = $dir . '/' . hash_file('sha256', $tmp_name) . 'ext'; 
$success = move_uploaded_file(tmp_name, $newfilename); 
if (!$success) { 
    http_send_status(500); 
    die("Could not upload file"); 
} 

Вы также должны смотреть в проверке того, что загруженный файл действительно изображение.

$info = getimagesize($_FILES['image']['tmp_name']); 
// image/jpeg does not have to be just jpeg but a list of 
// mime types you will accept 
if (is_array($info) && isset($info['mime']) && $info['mime'] === 'image/jpeg') { 
    // then move the file to permanent storage 
} 
Смежные вопросы