如何在Laravel中直接将文件上传到public文件夹?


这是我们public/文件夹中的内容。

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

上面的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

现在上传一个文件,看看public文件夹中是否有更改。

<?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); } }

为了将文件移动到public文件夹,我们使用$request->image->move(),它可以帮助将上传的图像移动到目标路径。public文件夹路径使用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文件夹中,您将看到上传的文件:

更新于:2022年8月30日

28K+ 次查看

启动您的职业生涯

完成课程后获得认证

开始
广告