如何解决Laravel 背包文件上传
我最近安装了 Laravel 背包 我的表格有一个 pdf 文件要上传 我阅读了背包上的教程,但无法解决
我调试后发现 request()->hasFile() 为空 请求中没有文件 并且添加表单的 html 代码中没有 enctype=""
解决方法
routes/web.php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\FileUploadController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('file-upload',[FileUploadController::class,'fileUpload'])->name('file.upload');
Route::post('file-upload','fileUploadPost'])->name('file.upload.post');
创建 FileUploadController app/Http/Controllers/FileUploadController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class FileUploadController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function fileUpload()
{
return view('fileUpload');
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function fileUploadPost(Request $request)
{
$request->validate([
'file' => 'required|mimes:pdf,xlx,csv|max:2048',]);
$fileName = time().'.'.$request->file->extension();
$request->file->move(public_path('uploads'),$fileName);
return back()
->with('success','You have successfully upload file.')
->with('file',$fileName);
}
}
创建刀片文件
resources/views/fileUpload.blade.php
<!DOCTYPE html>
<html>
<head>
<title>laravel 8 file upload example - ItSolutionStuff.com.com</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="panel panel-primary">
<div class="panel-heading"><h2>laravel 8 file upload example - ItSolutionStuff.com.com</h2></div>
<div class="panel-body">
@if ($message = Session::get('success'))
<div class="alert alert-success alert-block">
<button type="button" class="close" data-dismiss="alert">×</button>
<strong>{{ $message }}</strong>
</div>
@endif
@if (count($errors) > 0)
<div class="alert alert-danger">
<strong>Whoops!</strong> There were some problems with your input.
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<form action="{{ route('file.upload.post') }}" method="POST" enctype="multipart/form-data">
@csrf
<div class="row">
<div class="col-md-6">
<input type="file" name="file" class="form-control">
</div>
<div class="col-md-6">
<button type="submit" class="btn btn-success">Upload</button>
</div>
</div>
</form>
</div>
</div>
</div>
</body>
</html>
,
Laravel Backpack 用于管理 CRUD 功能。您需要在管理控制器中将字段类型定义为“浏览”以进行文件上传。例如,下面是上传和文件。它将在你的 Laravel 默认文件系统中上传单个文件,并将路径保存在数据库的 photo_path 字段中。
$this->crud->addField([ // Photo
'name' => 'photo_path','label' => "Photo",'type' => 'browse'],'both');
这仅适用于管理员,如果您想为前端提供上传功能,则 Backpack API 不适用。在这种情况下,请查看 Laravel 文档。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。