无需更改名称即可上传Laravel文件

问题描述 投票:0回答:1

我想将文件上传到我的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,
            ]);
        }
    }
}
php file-upload laravel-5.8
1个回答
1
投票

您可以将控制器更改为此:

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/filesystemMIME验证的官方文档:https://laravel.com/docs/5.8/validation#rule-mimes

© www.soinside.com 2019 - 2024. All rights reserved.