我正在尝试在我的项目中上传pdf文件,但存储的结果路径是C:\xampp mp\phpB52C.tmp,文件名是LMIkeQyRRYG5sOb27ykUNgIYDYw5WyOxmdu9y3hM.pdf,路径为Storage/app/bookFiles和文件中的内容包含字符(不是真正的内容)。 我有以下两个问题:
这是我的代码:
BookController =>
public function store(BookRequest $request, Product $product)
{
$inputs = $request->all();
if($request->hasFile('file')){
$file = $request->file('file');
$file = Storage::disk('local')->put('bookFiles/', $request->file('file'));
}
$inputs['product_id'] = $product->id;
$book = Book::create($inputs);
return redirect()->route('admin.product.book.index', $product->id);
}
路线=>
Route::post('/book/store/{product}', [BookController::class, 'store'])->name('admin.product.book.store');
我使用put方法上传
在此代码中,
put
方法会自动为文件名生成唯一的 ID。
public function store(BookRequest $request, Product $product)
{
$inputs = $request->all();
if($request->hasFile('file')){
$file = $request->file('file');
$path = Storage::disk('local')->put('bookFiles', $file);
$inputs['file_path'] = $path; // Save the path of the file in the database
}
$inputs['product_id'] = $product->id;
$book = Book::create($inputs);
return redirect()->route('admin.product.book.index', $product->id);
}
如果你想保留原来的文件名,可以使用
storeAs
方法:
$path = Storage::disk('local')->storeAs('bookFiles', $file->getClientOriginalName(), $file);
请记住将
file_path
列(或您命名的任何名称)添加到 books
表中以存储文件路径。