我想把产品和表单一起上传到数据库


@extends('master') @section("content") <h1>Upload</h1> <form action="upload" method="POST" enctype="multipart/form-data">
@csrf
<div class="form-group">
<label>Name</label>
<input type="name" name="name" class="form-control" placeholder="Enter Name">
</div>
<div class="form-group">
<label>Price</label>
<input type="price" name="price" class="form-control" placeholder="Enter price">
</div>
<label>Category</label>
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Choose
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<a class="dropdown-item" href="#">Item</a>
<br><a class="dropdown-item" href="#">Diamond</a>
<br><a class="dropdown-item" href="#">Akun</a>
</div>
</div>
</div>
<div>
<input type="file" name="file"><br><br></div>
<div>
<button type="submit"> Sell Item</button>
</div> </form> @endsection ```
function upload(Request $req)
{

$products = new Product;
$products->name=$req->name;
$products->price=$req->price;
$products = $req->file('file')->store('Products');
$req->product()->upload([
'file'=> $products
]);
return redirect ('/');
} ```

我无法将其上传到数据库。它说

BadMethodCallException方法Illuminate\Http\Request::产品不存在。

我想从表单上传到数据库。在im使用带有播种机的产品数据库之前

更新控制器上传((函数:

use IlluminateHttpRequest;
public function upload(Request $request){
$request->validate([
'file' => 'required|mimes:csv,txt,,xlx,xls,pdf|max:2048'
]);
$products = new Product;
$products->name = $request->name;
$products->price = $request->price;
if ($request->file('file')) {
$fileName = time().'.'.$request->file->extension();
$request->file->move(public_path('/upload'), $fileName);
$products->file= $filename;
} 
$products->save(); 
return redirect('/');
}

在这个public_path('/upload'(路径中,您可以使用自己的路径上传文件。

您必须在插入查询$products->save();之后写入此行,否则它无法存储在数据库中。此外,您还编写了文件上传路径$file->move('uploads/', $filename);,您无法定义文件的上传路径。您的文件上传路径将类似于file->move(public_path('/your file path'), $fileName);

现在,应该可以正常工作了。

您的视图

<form method="POST" action="/upload" enctype="multipart/form-data">
@csrf
<div class="form-group">
<label>Name</label>
<input type="name" name="name" class="form-control" placeholder="Enter Name">
</div>
<div class="form-group">
<label>Price</label>
<input type="price" name="price" class="form-control" placeholder="Enter price">
</div>
<label>Category</label>
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Choose
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<a class="dropdown-item" href="#">Item</a>
<br><a class="dropdown-item" href="#">Diamond</a>
<br><a class="dropdown-item" href="#">Akun</a>
</div>
</div>
</div>
<div>
<input type="file" name="file"><br><br></div>
<div>
<button type="submit"> Sell Item</button>
</div>
</form>

您的控制器

public function upload(Request $request)
{
$products = new Product;
$products->name = $request->name;
$products->price = $request->price;
if ($request->hasFile('file')) {
$file = $request->file('file');
$extension = $file->getClientOriginalExtension();
$filename = time() . '.' . $extension;
$file->move('uploads/', $filename);
$products->file= $filename;
}
$products->save();
return redirect('/');

}

这应该行得通

更新控制器中的代码

使用Illuminate\Http\Request;

public function upload(Request $request){
$products = new Product;
$products->name = $request->name;
$products->price = $request->price;
if ($request->file('file')) {
$file = $request->file('file');
$path = public_path() . '/uploads';
$filename = time() . '_' . $file->getClientOriginalName();
if ($file->move($path, $filename)) {
$products->file= $filename;
} 
} 
$products->save(); 
return redirect('/');
}

在路径部分,你可以定义你的文件路径,在哪里你想上传你的文件

最新更新