2014-01-10 6 views
6

Я искал решение, но не могу найти ответ.move_uploaded_file() Не удается переместить файл из tmp в каталог

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

move_uploaded_file() Не удалось переместить файл из [TMP] в [каталог].

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

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.

ответ

8

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

$destination_path = getcwd().DIRECTORY_SEPARATOR; 
$target_path = $destination_path . basename($_FILES["profpic"]["name"]); 
@move_uploaded_file($_FILES['profpic']['tmp_name'], $target_path) 
+6

Спасибо чувак! С небольшим поворотом работала отлично! – Wadapmerth

+7

lol @ "twerking" – Rafael

+0

не могли бы вы объяснить в глубине –

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