带有原始名称文件的save()



我有一些问题。我需要用原始名称而不是名称FAJFJAKJ@$!@@!#将我的文件保存到storage/public/apps——看起来是这样的。

我在那里错过了什么??

控制器

public function upload(Request $request)
{
$request->file('file')->save('public/apps');
return redirect()->back()->with('message', 'File Upload Successfully!');
}

web.php

Route::prefix('admin')->middleware('auth')->group(function(){
Route::get('/', 'AdminIndexController@index');
Route::get('dashboard', 'AdminIndexController@index')->name('dashboard');


Route::get('upload-files', 'AdminUploadController@index');
Route::post('upload-files', 'AdminUploadController@upload');


Route::get('links', 'AdminLinkController@index')->name('links');
Route::get('links/create', 'AdminLinkController@createUlr')->name('links.create');
Route::post('links/create', 'AdminLinkController@store')->name('links.store');
Route::get('links/{id}', 'AdminLinkController@linkById')->name('link.chose');
Route::post('links/{id}', 'AdminLinkController@update')->name('link.delete');
Route::delete('links/{id}', 'AdminLinkController@delete')->name('link.delete');
});

表单

<form class="col-lg-push-6" action="/admin/upload-files" method="POST" enctype="multipart/form-data">
@csrf
<div class="form-group bmd-form-group">
<label class="bmd-label-floating">New File</label>
<br>
<br>
<br>
<input type="file" class="form-control" size="100" name="file">
</div>
<button  class="btn btn-primary" type="submit">Create</button>
</form>

每当在Laravel Controller中处理文件上传时,以下内容都会对有所帮助

public function store(Request $request)
{
//Validate request data if there are other fields as well
// do not include image fields in validation rules
$validatedData = $request->validate($rules, $request->except('image'));
//Check if $request has uploaded file and whether it's a valid file 
if($request->hasFile('image') && $request->file('image')->isValid()) {
//Custom name pattern as per application preference
$filename = time() . '.' . $request->file('image')->extension();
//Or - Get the original name of the uploaded file
$filename = $request->file('image')->getClientOriginalName();
//Store the file in desired directory and assign the path to the image field in validated data
$validatedData['image'] = $request->file('image')->storeAs('images', $filename);
}  
//Fill the values from validatedData and save the record
$model->fill($validatedData);
$model->save();
}

如果你想用原始名称上传文件,你可以使用getClientOriginalName()函数返回文件的原始名称,这里有一些代码可以帮助你将文件上传到你想要的位置,我强烈建议用Variables包装你的路径。

public function upload(Request $request)
{
$imageName = "{$request->file->getClientOriginalName()}.{$request->file->getClientOriginalExtension()}";
$imagePath = "public/apps/{$imageName}";
$request->file->move(public_path("public/apps"), $imageName);
}

您可以看到以下内容:

<?php
use IlluminateHttpRequest;
//importing user model
use AppUser;
class UploadImage
{
function avatarUpload(Request $request)
{

$file = $request->file('avatar_img');
//getting original name of file
$fileName = $file->getClientOriginalName();
$post = [
'avatar_img'=> $fileName,
'id'=> $request->user()->id
];
//saving into database
$create = User::create($post);
if($create)
{
//store file, it will store in avatars folder inside app folder
$store = $file->storeAs('avatars',$fileName);
return $store ? 'Avatar image uploaded' : 'Avatar image store failed';
}
return 'Avatar image upload failed';        
}   
}
?>

最新更新