laravel - 使用 Swagger API 上传图片
问题描述
我正在使用 Laravel 7 开发一个 api,并使用 Swagger 编写 API 文档。我的问题是我想使用 Swagger API 上传图像,但它不仅在打印图像时显示 [object File],因此我无法将它们上传到公共文件夹。我的店铺方法
/**
* Store a newly created Products.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*
* @OA\Post(
* path="/api/products",
* tags={"Product"},
* @OA\Response(response="200", description="Adding a new Product."),
*
* @OA\Parameter(
* name="name[]",
* in="query",
* description="Product Name",
* required=true,
* @OA\Schema(type="array", @OA\Items(type="string")),
* ),
* @OA\Parameter(
* name="images[]",
* in="query",
* description="Product Images",
* required=true,
* @OA\Schema(type="array", @OA\Items(type="file")),
* ),
* * )
* )
*
*/
public function upload(Request $request)
{
$request->validate([
"name" => "required",
"images" => "required",
]);
$images = $request->images;
$product = Product::create([]);
if(! is_dir(public_path("/products")) ){
mkdir(public_path("/products"), 0777);
}
$id = $product->id;
$imageCollection = Collection::wrap($images);
$imageCollection->each(function($image) use ($id){
$basename = Str::random();
$original = $basename . "." . $image->getClientOriginalExtension();
$image->move(public_path("/products"), $original);
ProductMedia::create([
"product_id" => $id,
"image" => "/products/".$original,
]);
});
return Product::where("id", $product->id)->with("productMedia")->get();
}
如何通过 Swagger API 添加图像?
解决方案
看起来您正在使用L5 Swagger Package。您可能必须弄清楚如何添加注释以允许multipart/form-data。不知道如何通过包进行配置,但这里有一些来自Swagger 文件上传文档的更多信息
推荐阅读
- powershell - Powershell将变量存储到变量中不起作用
- python - 如何删除 Tkinter 中的现有文本?
- sql - 我得到了第一行中一列的 SUM() 加上聚合的“分组依据”结果
- arrays - 如何在飞镖中打印没有大括号的列表项?
- python - add-apt-repository 命令返回 extrange 错误
- ios - iOS 13 新呈现风格——呈现 VC 不缩水
- javascript - bootsrap 将下拉菜单代码更改为过于复杂的内容
- blazor - 自定义范围输入在 Blazor 上传递到默认值
- matlab - 保存每 300 毫秒重复一次的样本
- node.js - 哪个是 Azure 上 node.js 电报机器人的最佳托管解决方案?