我尝试使用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;
}
答案 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";
}
}
}
确保您的文件夹必须存在于公共目录中。 希望它有所帮助!