php - Laravel文件上传不更改名称
问题描述
我想将文件上传到我的 laravel 项目。但我认识到 laravel 会随机更改我的文件名。如何在不更改名称的情况下将文件上传到 laravel。不知何故,我的验证不起作用。我刚刚被重定向,没有任何消息。这是我的刀片
//show errors
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
/ul>
</div>
@endif
// forms
<form action="{{ route('designers.store') }}" method="post" enctype="multipart/form-data">
{{ csrf_field() }}
<div class="form-group d-flex flex-column">
<label for="exampleInputFile">File input</label>
<input type="file" name="files[]" multiple>
</div>
<button type="submit">Submit</button>
</form>
这是我的控制器
$data = $request->validate([
'project' => 'required|numeric',
'totalItem' => 'required|numeric',
'files' => 'file',
]);
if ($request->hasFile('files')) {
$allowedfileExtension=['pdf','jpg','png','docx','png','xlsx'];
$files = $request->file('files');
foreach ($files as $key => $value) {
$filename = $value->getClientOriginalName();
$extention = $value->getClientOriginalExtension();
$check = in_array($extention,$allowedfileExtension);
if ($check) {
File::create([
'name' => $value->store('designers','public'),
'type' => 'designer',
'project_id' => $data['project'],
'user_id' => Auth::user()->id,
]);
}
}
}
解决方案
您可以将控制器更改为:
use Illuminate\Support\Facades\Storage;
function yourFunction(){
$this->validate($request,[
'project' => 'required|numeric',
'totalItem' => 'required|numeric',
'files' => 'nullable|array|file|mimes:pdf,jpg,png,docx,xlsx' //This validates file and MIME type. Also if it isn't required, it should perhaps be nullable.
]);
if($request->hasFile('files'){
$files = $request->file('files');
foreach($files as $file){
$filename = $file->getClientOriginalName();
Storage::disk('local')->put($filename, file_get_contents($file)); //This stores your file.
}
}
//Save stuff to DB here
}
关于文件存储的官方文档:https
:
//laravel.com/docs/5.8/filesystem 关于验证 MIME 的官方文档:https ://laravel.com/docs/5.8/validation#rule-mimes
推荐阅读
- python-3.x - How to call super().__init__(*args, **kwargs) with super() a specific instance
- hive - hive accesses orc external table by position rather than column name
- html - 如何在不改变内部元素位置的情况下使绝对元素居中
- c# - NUnit.Framework.AssertionException : 并非所有参数都被绑定。-Nunit & Moq
- c# - 设置请求超时的集中方法?
- azure-ad-b2c - 在页面加载时显示错误标签的自定义策略
- elasticsearch - Elastic Search - 它是适合分析团队的数据库吗?
- blockchain - 区块链性能和区块链可扩展性有什么区别?
- c# - C# REST API 查询解析器
- create-react-app - Vercel 重定向中的环境变量