我正在使用Laravel 5.2,我想创建一个可以上传pdf文件的表单。我想将该文件添加到“public”文件夹中的“files”文件夹中。
这是我的观点:
<div class="form-group">
<label for="upload_file" class="control-label col-sm-3">Upload File</label>
<div class="col-sm-9">
<input class="form-control" type="file" name="upload_file" id="upload_file">
</div>
</div>
接下来我该怎么办?我应该在控制器和路线中添加什么?
答案 0 :(得分:7)
首先,您应该将enctype="multipart/form-data"
添加到<form>
标记中。然后在您的控制器处理文件上传,如下所示:
class FileController extends Controller
{
// ...
public function upload(Request $request)
{
$uniqueFileName = uniqid() . $request->get('upload_file')->getClientOriginalName() . '.' . $request->get('upload_file')->getClientOriginalExtension());
$request->get('upload_file')->move(public_path('files') . $uniqueFileName);
return redirect()->back()->with('success', 'File uploaded successfully.');
}
// ...
}
Link to Laravel Docs for Handling File Uploads
Laravel将请求中的文件类型params转换为UploadedFile
个对象。您可以查看Symfony的UploadedFile
类here了解可用的方法和属性。
答案 1 :(得分:3)
首先,文档会准确地告诉您要做什么here。
您要将其添加到<form>
标记中:
enctype="multipart/form-data"
(这允许您上传数据),设置method
(获取/发布)和action
(网址)。
然后你想设置你的路线。
例如:
Route::post('/pdf/upload', 'FileController@upload');
通过这种方式,您确保在发送表单时,它会以FileController
为upload
作为功能。
在您的控制器中,您希望按照文档中的说明声明文件
$file = $request->file('photo');
。
从这一点开始,您可以对文件($file
)执行任何操作。例如,将其上传到您自己的服务器。
答案 2 :(得分:2)
public function store(Request $request)
{
if($request->file('file'))
{
$file = $request->file('file');
$filename = time() . '.' . $request->file('file')->extension();
$filePath = public_path() . '/files/uploads/';
$file->move($filePath, $filename);
}
}
答案 3 :(得分:1)
答案 4 :(得分:1)
您可以在Laravel中使用此代码上传文件:
$request->file('upload_file')->move($path,$name);
答案 5 :(得分:0)
您可以查看我如何上传文件,接受所有文件: 首先是create.blade.php表单的代码
{!! Form::open(
array(
'url' => 'uploads',
'method' => 'post',
'class' => 'form',
'novalidate' => 'novalidate',
'files' => true)) !!}
@include('uploadspanel.create_form')
{!! Form::close() !!}
请记住将文件设置为true
然后是uploadspanel.create_form
<div class="form-group">
{!! Form::label('name', 'Name:') !!}
{!! Form::text('name', null, ['class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::label('file', 'Bestand:') !!}
{!! Form::file('file',null,['class'=>'form-control']) !!}
</div>
@if(\Auth::user()->level == 2)
<div class="form-group">
{{ Form::label('approved', 'Beschikbaar voor:') }}
{{ Form::select('approved', array(1 => 'Iedereen', 2 => 'monteurs', 3 => 'concept'), null, ['class' => 'form-control']) }}
</div>
@else
{{ Form::hidden('approved', 3) }}
@endif
<div class="form-group">
{!! Form::submit('Bestanden uploaden',['class' => 'btn btn-primary form-control']) !!}
</div>
然后是控制器存储功能
public function store(UploadRequest $request){
$extension = Input::file('file')->getClientOriginalExtension();
$filename = rand(11111111, 99999999). '.' . $extension;
Input::file('file')->move(
base_path().'/public/files/uploads/', $filename
);
if(\Auth::user()->level == 2) {
$approved = $request['approved'];
} else {
$approved = 3;
}
$fullPath = '/public/files/uploads/' . $filename;
$upload = new Uploads(array(
'name' => $request['name'],
'format' => $extension,
'path' => $fullPath,
'approved' => $approved,
));
$upload->save();
$uploads = Uploads::orderBy('approved')->get();
return view('uploadspanel.index', compact('uploads'));
}