上传照片PHP / Ajax

时间:2018-01-31 10:08:20

标签: php jquery laravel

我尝试使用Ajax和PHP上传照片,但是返回错误,我不知道原因:

  

消息:" move_uploaded_file(/site/uploads/users/user.png):失败了   开放流:没有这样的文件或目录"

返回(文件):

C:\xampp\tmp\php2BAB.tmp

JQUERY:

$("#user-upload-photo").submit(function (){

        $("#user-upload-photo").ajaxSubmit({
            url: '/ajax/settings/upload',
            type: 'post',
            beforeSubmit: function(){
                $("#photo-loading").show();
                $("#photo-figure").hide();
            },
            success: function () {
                $("#photo-loading").hide();
                $("#photo-figure").show();
            }
        });

    return false;
});

这是返回错误的代码:

控制器:

public function upload(){
    if(!empty($_FILES)):
        if(is_uploaded_file($_FILES['user-photo-input']['tmp_name'])):
            $srcPath = $_FILES['user-photo-input']['tmp_name'];
            $trgPath = '/site/uploads/users/' . $_FILES['user-photo-input']['name'];

            if(move_uploaded_file($srcPath, $trgPath)):
                return response()->json(['succcess' => '1', 'photo' => $trgPath]);
            endif;

        endif;
    endif;
}

2 个答案:

答案 0 :(得分:5)

首先检查您尝试上传的目录和所有子根是否存在

if (!file_exists('path/to/directory')) {
    mkdir('path/to/directory', 0777, true);
}

如果没有,请创建

答案 1 :(得分:0)

如果您使用的是Laravel框架,则必须使用laravel预定义函数试用此代码: -

public function upload(Request $request){
if($request->hasFile('user-photo-input')){
    if (Input::file('user-photo-input')->isValid()) {
        $file = Input::file('user-photo-inpu');
        $destination = 'site/uploads/users'.'/';
        $ext= $file->getClientOriginalExtension();
        $mainFilename = str_random(6).date('h-i-s');
        $file->move($destination, $mainFilename.".".$ext);
        echo "uploaded successfully";
    }
}
}

确保您的文件夹必须存在于公共目录中。 希望它有所帮助!