我正在尝试将xls文件上传到我公共目录中名为“xls”的文件夹中。
起初它在我在网络服务器上部署我的应用程序时起作用但后来当我对我的文件进行了一些更改,虽然我没有触摸上传xls的文件。但是当我尝试在线上传throews时它停止工作我错误“无法创建”/xls/sample.xlsx“目录”。但是如果我尝试上传,它仍然适用于我的本地主机。
我已将文件夹权限更改为777和755.但仍然没有运气。我的控制器看起来是怎样的
public function store()
{
$rules =[
'xls' => 'Required|mimes:xls,xlsx',
];
$validation = Validator::make(Input::all(),$rules);
if ($validation->passes())
{
$xls = new Xls;
$xlsname=Input::file('xls')->getClientOriginalName();
$path = public_path('xls/'.$xlsname);
$xls->name = $xlsname;
Input::file('xls')->move($path);
$xls->save();
return Redirect::to('/')->with('success','Excel Sheet successfully uploaded');
}
$formerror = Response::json($validation->messages()->toArray());
// Session::put('formerror',$formerror);
}
请问我做错了什么
编辑一:
当我对我的控制器进行以下更改时,它仍无法在我的webserve上运行它会抛出错误:无法创建“/ xls”目录,但在我的本地主机上运行完美。
public function store()
{
$rules =[
'xls' => 'Required|mimes:xls,xlsx',
];
$validation = Validator::make(Input::all(),$rules);
if ($validation->passes())
{
$xls = new Xls;
$xlsname=Input::file('xls')->getClientOriginalName();
$path = public_path('xls');
$xls->name = $xlsname;
Input::file('xls')->move($path,$xlsname);
$xls->save();
return Redirect::to('/')->with('success','Excel Sheet successfully uploaded');
}
// $formerror = Response::json($validation->messages()->toArray());
Session::put('formerror',$validation->messages()->toArray());
}
答案 0 :(得分:0)
如Laravel Docs中所述,move
函数需要将目标路径作为第一个参数,将(可选)文件名作为第二个参数。 (我相信默认文件名将是来自客户端的文件名)。所以第一个参数应该是文件夹而不是完整路径。
所以改为:
$path = public_path('xls');
Input::file('xls')->move($path); // or, alternatively: ->move($path, 'your-own-file-name.xls');