move_uploaded_file:当使用另一个目录时没有这样的文件

时间:2015-11-17 00:59:06

标签: php file path directory move

我正在使用answer,他们使用:

move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' . $_FILES['file']['name']);

如果我创建一个'上传'它就像一个魅力。在' php'内的目录执行此代码的目录。

如果我尝试这样做:

move_uploaded_file($_FILES['file']['tmp_name'], '../img/' . $_FILES['file']['name']);

我收到了这个警告:

enter image description here

我在这里缺少什么?我也尝试过绝对路径!

目录树:

scouter
  -img
  -php
    -uplodas
    -upload.php

' IMG'目录似乎有所需的权限选项。

EDIT_0:

如果我将文件放在uploads目录中,然后使用rename(),则会将文件放在img目录中...无法获取正在发生的事情!

EDIT_1:

HTML:

<input id="input_pic" type='file' name='userFile'/>
<div>
  <img class="profile_pic" src="img/newname.jpg" alt="player_img" />
</div>

JS:

var file_data = $('#input_pic').prop('files')[0];   
var form_data = new FormData();                  
form_data.append('file', file_data);
alert(form_data);                             
$.ajax({
    url: 'php/upload.php',
    dataType: 'text',
    cache: false,
    contentType: false,
    processData: false,
    data: form_data,                         
    type: 'post',
    success: function(php_script_response){
      alert(php_script_response);
    }
});

EDIT_2:

服务器响应,来自swidmann的回答:

enter image description here

1 个答案:

答案 0 :(得分:2)

你在HTML中使用了另一个名字,我有点怀疑,这是以前的工作,你的HTML:

<input id="input_pic" type='file' name='userFile'/>

由于php应该是:

<input id="input_pic" type='file' name='file'/>

或你的php应该使用:

$_FILES['userFile']['tmp_name']

我认为您的问题可能是上传大小,请尝试调试:

    var_dump( $_FILES );
    $upload = move_uploaded_file( $_FILES['file']['tmp_name'], dirname( dirname( __FILE__ ) ).'/img/'. $_FILES['file']['name'] );
    var_dump( $upload );
    var_dump( ini_get("upload_max_filesize") );// what is allowed and how big is your picture?
    var_dump( $_FILES['file']['size']  );// if this is 0, maybe your allowed upload size is to low

顺便说一下,我试过这个并且它有效:

dirname( dirname( __FILE__ ) ).'/img/'

要更改允许的上传大小,您必须更改以下选项: 在php.ini中设置upload_max_filesizepost_max_size

; Maximum allowed size for uploaded files.
upload_max_filesize = 40M

; Must be greater than or equal to upload_max_filesize
post_max_size = 40M

如果一切正常,请尝试绝对路径:

move_uploaded_file( $_FILES['file']['tmp_name'], $_SERVER["DOCUMENT_ROOT"]."/test/scouter/img/".$_FILES['file']['name'] );