如何在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文件夹中,您将看到上传的文件:
广告