Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 拉拉维尔:“我不知道;无法创建根目录";存储文件时_Php_Jquery_Ajax_Laravel - Fatal编程技术网

Php 拉拉维尔:“我不知道;无法创建根目录";存储文件时

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

我试图通过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代码:

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');