如何在 Laravel 中将文件直接上传到 public 文件夹?
这就是我们在 public/ 文件夹中的内容。

让我们将上传到 images/ 文件夹中的文件移动到 public 文件夹中。文件上传显示如下 -

上述 blade 模板如下 -
<html> <head> <title>Student Form</title> </head> <body> @if (count($errors) > 0) <div class = "alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <?php echo Form::open(array('url'=>'/student', 'files'=>'true')); echo 'Upload File.'; echo Form::file('image'); echo Form::submit('Upload'); echo Form::close(); ?> </body> </html>
示例 1
现在上传一个文件并查看更改是否在公共文件夹中。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class StudentController extends Controller { public function index() { return view('student'); } public function uploadFile(Request $request) { //Move Uploaded File to public folder $destinationPath = 'images'; $myimage = $request->image->getClientOriginalName(); $request->image->move(public_path($destinationPath), $myimage); } }
为了将文件移动到公共文件夹,我们使用$request->image->move(),它有助于将上传的图像移动到目标路径。使用以下方法检索公共文件夹路径:public_path($destinationPath)
输出
上述代码的输出如下:-

点击上传后,文件将移动到 public/ 文件夹,如下所示:-

示例 2
您可以使用文件实例对象上提供的 store() 方法。对于 store() 方法,您必须指定要存储文件的路径。
关于 store() 方法的另一个重要特性是,它会为存储的文件创建一个随机的唯一名称并返回路径。该文件存储在 storage/public/images 目录中,如下所示 -
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Student; //use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\DB; use Illuminate\Support\Collection; use Illuminate\Support\Facades\Storage; use URL; use Illuminate\Support\Facades\App; class StudentController extends Controller{ public function index() { return view('student'); } public function uploadFile(Request $request) { $file = $request->file('image'); echo $path = $request->file('image')->store('images'); } }
storage/public/ 文件夹详细信息如下 -

输出
上述程序的输出如下 -

上述路径可用于将文件位置存储在数据库中。
示例 3
存储上传文件的另一种方法是使用 Storage::putfile() 方法。要使用 Storage Facade 类,您需要包含以下类:
use Illuminate\Support\Facades\Storage;
putfile() 方法会将指定的文件存储在指定的文件夹中。它会更新 storage/public 文件夹中的文件。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Storage; class StudentController extends Controller { public function index() { return view('student'); } public function uploadFile(Request $request) { $file = $request->file('image'); echo $path = Storage::putFile('images', $request->file('image')); } }
输出
上述代码的输出如下

在 storage/public/images/ 文件夹中,您应该看到已上传的文件 -

示例 4
如果您看到 store() 和 putfile(),请按照其方式更改文件名。如果您不想更改文件名,可以使用 storeAs() 方法。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Student; //use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\DB; use Illuminate\Support\Collection; use Illuminate\Support\Facades\Storage; use URL; use Illuminate\Support\Facades\App; class StudentController extends Controller { public function index() { return view('student'); } public function uploadFile(Request $request) { echo $path = $request->file('image')->storeAs( 'images', $request->image->getClientOriginalName() ); } }
输出
上述代码的输出为 −

在 storage/public/images 文件夹中,您将看到已上传的文件 −


