如何将Laravel中的文件直接上传到公共文件夹?

Fab*_*otk 15 php laravel laravel-5.4

我托管我的网站的服务器不支持,links所以我无法运行将php artisan storage:link我的存储目录链接到公共目录.我试图在filesystems.php中重新制作磁盘配置以直接引用该public文件夹,但它似乎也没有用.有没有办法将Laravel库直接上传到公共文件夹中,或者我必须使用php方法?提前致谢.

sun*_*mad 33

您可以在以下位置创建新的存储光盘config/filesystems.php:

'public_uploads' => [
    'driver' => 'local',
    'root'   => public_path() . '/uploads',
],
Run Code Online (Sandbox Code Playgroud)

并存储这样的文件:

if(!Storage::disk('public_uploads')->put($path, $file_content)) {
    return false;
}
Run Code Online (Sandbox Code Playgroud)

  • `$path = $request->photo->storeAs('images', 'filename.jpg', 'public_uploads');` 用于为上传的文件使用自定义名称。这是文档。https://laravel.com/docs/5.5/requests#storing-uploaded-files (3认同)
  • $path 当然必须包含文件名,但它也可以包含一个或多个子文件夹。 (2认同)

Ino*_*loh 15

您可以将磁盘传递给\Illuminate\Http\UploadedFile类的方法:

$file = request()->file('uploadFile');
$file->store('toPath', ['disk' => 'public']);
Run Code Online (Sandbox Code Playgroud)

或者您可以创建新的文件系统磁盘并将其保存到该磁盘。

您可以在以下位置创建新的存储磁盘config/filesystems.php

'my_files' => [
    'driver' => 'local',
    'root'   => public_path() . '/myfiles',
],
Run Code Online (Sandbox Code Playgroud)

在控制器中:

$file = request()->file('uploadFile');
$file->store('toPath', ['disk' => 'my_files']);
Run Code Online (Sandbox Code Playgroud)


Wil*_*ewa 10

您应该尝试添加method="post" enctype="multipart/form-data"到表单中的这种跳跃。请注意,公共路径 (uploadedimages) 将被移动到您项目目录中的公共文件夹,这就是上传图像的位置。

public function store (Request $request) {
  
  $imageName = time().'.'.$request->image->getClientOriginalExtension();
  $request->image->move(public_path('/uploadedimages'), $imageName);

  // then you can save $imageName to the database

}
Run Code Online (Sandbox Code Playgroud)