Php 拉拉维尔:“我不知道;无法创建根目录";存储文件时
我试图通过AJAX将一个文件存储到laravel的公用文件夹中,但是当我提交表单时,我收到以下消息: 消息:“无法创建根目录\”C:\xampp\htdocs\Restaurante1\storage\app\C:/xampp/htdocs/Restaurante1/public/img\”,异常:“League\Flysystem\exception”,文件:“C:\xampp\htdocs\Restaurante1\vendor\League\Flysystem\src\Adapter\Local.php” 我正在尝试将文件存储到公共目录中的以下文件夹中:public>img>uploads 这是我的JQuery代码:Php 拉拉维尔:“我不知道;无法创建根目录";存储文件时,php,jquery,ajax,laravel,Php,Jquery,Ajax,Laravel,我试图通过AJAX将一个文件存储到laravel的公用文件夹中,但是当我提交表单时,我收到以下消息: 消息:“无法创建根目录\”C:\xampp\htdocs\Restaurante1\storage\app\C:/xampp/htdocs/Restaurante1/public/img\”,异常:“League\Flysystem\exception”,文件:“C:\xampp\htdocs\Restaurante1\vendor\League\Flysystem\src\Adapter\Lo
console.log('newsliderbutton clicked');
var formData=new formData();
append('title',$('#sliders_title').val();
append('body',$('#sliders_body').val();
formData.append('isVisible',$('isVisible').is(':checked')?1:0;
formData.append('image',$('#sliders_image').prop('files')[0]);
$.ajax({
async:true,
url:“/滑块”,
键入:“POST”,
数据:formData,
数据类型:“JSON”,
processData:false,
contentType:false,
成功:函数(数据){
$('.form\u valid\u container').html('✓ '+ data.success+“”);
形式。触发(“重置”);
console.log(data.success,data.errors);
},
错误:函数(数据){
var errors=data.responseJSON;
console.log(错误);
$.each(错误,函数(){
$('.form_error_container').html('✘ '+ 错误。消息+“”)
});
}
});
我的回答可能与这个问题无关,但如果有人遇到同样的问题,我认为可能会有所帮助。我遇到了同样的问题,我“putFileAs”与“storeAs”的工作方式相同,比如$path=Storage::putFileAs(“public/users\u upload/”.$user->username、$File\u to\u be\u move、$File\u name\u to\u store\u as);
第一个参数是指向目录的路径…首先,你应该知道你所做的是不好的做法。但你也应该知道错误不是因为Laravel做不到。这是因为Laravel找不到路径。”img/上传”
解决方案1:手动创建目录,如果使用存储库管理器,请不要忘记在其中添加.gitignore文件(如果使用Git)
解决方案2:
之后:
// storing path (Change it to your desired path in public folder)
$path = 'img/uploads/';
加:
解决方案3(Laravel建议我们如何做):
因为您使用的是windows,所以可以创建符号链接(实际上是硬链接,但仍然是硬链接)
以管理员身份运行命令提示符(cmd)并键入:
mklink /J "laravel/public/file/directory/uploadsdirectory" "/path/to/laravel/roor/storage/app"
之后,您可以更改以下内容:
$uploadFile->storeAs(public_path($path), $filename);
致:
注意:我没有尝试过这些代码/解决方案,但它们应该可以完美地工作。在文件系统中,您需要创建驱动程序磁盘
'uploads' => [
'driver' => 'local',
'root' => public_path('img/uploads'),
'url' => '/img/uploads',
'visibility' => 'public',
],
您可以调用控制器存储
$uploadFile->storeAs('/', $filename, 'uploads');
显示您的
config/filesystems.php
文件使用信息$uploadFile->storeAs(public_path($path),$filename)编辑OP;
是您的问题,将public_path($path)
更改为类似于img
的内容,而不是完整的on路径出现问题,您试图将文件存储在存储目录$uploadFile->storeAs(public_path($path),$filename)
,如果您不想将其存储在公共目录中,则需要在filesystems.php
中添加新磁盘,然后在storeAs()中使用该磁盘。
function@Derek我想他不会把那个文件存储在公共目录,而不是存储目录
'uploads' => [
'driver' => 'local',
'root' => public_path('img/uploads'),
'url' => '/img/uploads',
'visibility' => 'public',
],
$uploadFile->storeAs('/', $filename, 'uploads');