move_uploaded_file() Невозможно переместить файл из tmp в каталог

Я искал решение, но я не могу найти ответ.

Я создал форму загрузки изображения. Он работает с плагином ajaxform. Но все равно не загружается в каталог. В error_log написано

move_uploaded_file() Невозможно переместить файл из [tmp] в [dir].

Затем на переднем конце он говорит, что загрузка завершена. Но когда файл вызывается, он не существует.

HTML-код:

<div class="imgupload hidden">  
    <form id="profpicform" action="" method="post" enctype="multipart/form-data">
        <input type="file" size="60" name="profpic">
        <input type="submit" value="Submit File">
    </form>

    <div class="imguploadStatus">
        <div class="imguploadProgress">
            <div class="imguploadProgressBar"></div>
            <div class="imguploadProgressPercent">0%</div>
        </div>
        <div class="imguploadMsg"></div>
    </div>
    <div class="imgpreview"></div>
</div>

JS:

var options = { 
    beforeSend: function() 
    {
        $(".imguploadProgress").show();
        $(".imguploadProgressBar").width('0%');
        $(".imguploadMsg").html("");
        $(".imguploadProgressPercent").html("0%");
    },
    uploadProgress: function(event, position, total, percentComplete) 
    {
        $(".imguploadProgressBar").width(percentComplete+'%');
        $(".imguploadProgressPercent").html(percentComplete+'%');

    },
    success: function() 
    {
        $(".imguploadProgressBar").width('100%');
        $(".imguploadProgressPercent").html('100%');

    },
    complete: function(response) 
    {
        alert('Complecion');
    },
    error: function()
    {
        $(".imguploadMsg").html("<font color='red'> ERROR: unable to upload files</font>");
    }

    }; 

     $("#profpicform").ajaxForm(options);

СЕВЕРНАЯ СТОРОНА:

$output_dir = home_url()."/path/to/dir/";

if(isset($_FILES["profpic"])){
    if ($_FILES["profpic"]["error"] > 0){
      echo "Error: " . $_FILES["file"]["error"] . "<br>";
    }else{
        move_uploaded_file($_FILES["profpic"]["tmp_name"],$output_dir. $_FILES["profpic"]["name"]);
        if(get_user_meta($_SESSION['userid'], 'user_profile_picture')==""){
            add_user_meta($_SESSION['userid'], 'user_profile_picture', $_FILES['profpic']);
        }else{
            update_user_meta($_SESSION['userid'], 'user_profile_picture', $_FILES['profpic']);
        }
        echo "Uploaded File :".$_FILES["profpic"]["name"];
    }
}

Они находятся только в одном файле PHP. Разрешение папки для каталога 777.


person Wadapmerth    schedule 10.01.2014    source источник


Ответы (3)


Попробуй это:

$destination_path = getcwd().DIRECTORY_SEPARATOR;
$target_path = $destination_path . basename( $_FILES["profpic"]["name"]);
@move_uploaded_file($_FILES['profpic']['tmp_name'], $target_path)
person Zword    schedule 10.01.2014
comment
Спасибо приятель! С небольшим тверком сработало отлично! - person Wadapmerth; 10.01.2014
comment
не могли бы вы объяснить подробно - person Ravi Mane; 25.04.2016

Посмотрите на следующий случай:

$file_tmp = $_FILES['file']['tmp_name'];
$file_name = $_FILES['file']['name'];
$file_destination = 'upload/' . $file_name;
move_uploaded_file($file_tmp, $file_destination);

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

Проверьте сценарий, вызывающий ошибку:

Make sure you have created folder where you want to move your file.
Check for the folder permission, is it writable or not. Use chmod() to modify permission.
See if your target path URL is properly created or not. You can use dirname(__FILE__) to get the absolute path. To get current working directory, use getcwd().

ссылка: https://www.dospeedtest.com/blogs/php-warning-move_uploaded_file-unable-to-move/

person Sara Vaseei    schedule 10.06.2020

$destination_path = getcwd().DIRECTORY_SEPARATOR;
$target_path = $destination_path . 'images/'. basename( $_FILES["profpic"]["name"]);
move_uploaded_file($_FILES['profpic']['tmp_name'], $target_path);
  • getcwd() : получение текущего пути к рабочему каталогу из корня.
  • 'images/' : это каталог, в котором вы хотите сохранить файл.
person Piyush    schedule 13.09.2019