我试图保存上传的pdf文件,但pdf文件名在存储链接上更改。保存时有没有办法保留原来的文件名?
public $code, $pdfs;
public function mount(Applicant $applicant)
{
$this->code = substr(str_shuffle(str_repeat("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 5)), 0, 3).Carbon::createFromFormat('Y-m-d H:i:s', now())->format('md').rand(100, 999);
}
public function submit(Request $request)
{
$this->validate([
'pdfs.*' => 'mimes:pdf',
]);
$filenames = collect($this->tests)->map->store($this->code.'/', 'public');
return redirect()->route('careers.vacant');
}
这是我刀
<form wire:submit.prevent="submit" class="pt-3" enctype="multipart/form-data">
<div class="form-group">
<label class="form-label required" for="code" >Application {{ trans('fields.code') }}</label>
<input class="form-control" type="text" name="code" id="code" wire:model.defer="code" >
<div class="validation-message">
{{ $errors->first('code') }}
</div>
<div class="help-block">
{{ trans('fields.code_helper') }}
</div>
</div>
<input type="file" name="pdf" id="pdf" wire:model="pdfs" multiple >
<div wire:loading wire:target="pdfs">Uploading...</div>
@error('pdfs.*') <span class="error">{{ $message }}</span> @enderror
<div class="form-group">
<button class="mr-2 btn btn-indigo" type="submit">
{{ trans('global.submit') }}
</button>
<a href="{{ route('admin.applicants.index') }}" class="btn btn-secondary">
{{ trans('global.cancel') }}
</a>
</div>
</form>
我需要像这样保存PDF:
$filenames = collect($this->tests)->map->store($this->code.'/'.pdfFileName, 'public');
编辑:
foreach ($this->tests as $file) {
$name = $file->getClientOriginalName();
$file->store('moca/'.$this->code.'/'.$name, 'public');
}
我尝试了这段代码,但在路径$name
成为一个文件夹,而不是成为文件的名称
2条答案
按热度按时间vddsk6oq1#
livewire上传的文件对象类型为TemporaryUploadedFile,扩展了UploadedFile类。所以你可以使用Laravel的所有UploadedFile方法。
首先,你可以像这样得到文件名:
然后使用此名称保存文件。
如果一切正常,文件应保存在:storage/app/public/destination/folder/$filename
$path变量将等于:destination/folder/$filename或false如果操作失败。为此,需要正确配置公共磁盘。Laravel docs -公共磁盘。
默认情况下,公共盘使用本地驱动,并将其文件存储在storage/app/public。
要从Web访问这些文件,您需要创建一个从public/storage到storage/app/public的符号链接。
要通过Web访问该文件,您必须使用以下代码:
wmtdaxz32#
你可以试试这个:
$request->file('pdf')->getClientOriginalName()
将返回文件的原始名称