【问题标题】:Can't save files in my LARAVEL API folder with POSTMAN无法使用 POSTMAN 将文件保存在我的 LARAVEL API 文件夹中
【发布时间】:2020-01-01 21:28:25
【问题描述】:

当我尝试将图像从 POSTMAN 上传到我的 LARAVEL API 时,我遇到了一个小问题,我正在创建路径和名称,但是在发出 POST 请求时,图像没有保存在它应该在的假定文件夹中已保存。

路由是为了创建一个产品,图片与之对应:

路线:

Route::post('product/new','ProductController@store');

在我的控制器中:

    $product = new Product;
    $product->name = $request->input('name');
    //Other staff

    $file = $request->file('image');
    $extension = $file->getClientOriginalExtension();
    $filename = $product->name . '.' . $extension;
    $path = $file->move(public_path("/uploads/image/products/"), $filename);
    $product->image = $path;

还有 POSTMAN 配置:

已经尝试将内容类型标头配置为:x-www-form-urlencoded,内容类型为 multipart/form-data,不带 any Content type,但 3 个均无效

我得到的结果是:

{
"id": 1,
"name": "test1",
//staff
"image": "/app/public/uploads/image/products/test1.png",
}

但如果我在那里检查:/app/public/uploads/image/products/ 没有保存的图像

提前谢谢你:)

【问题讨论】:

  • 发布您的error_log 通知、警告和请求错误
  • 另外,你到底在做什么将上传放在公共文件夹中?这真的很不安全
  • 感谢回复,我请求的时候没有报错,应该是保存好图片,上传图片的时候postman字段只有一个警告,就是: “这个文件位于工作目录之外。协作者可能没有相同的文件路径。”另一方面,这个 API 将从他们交替开发的前端使用,考虑到这一点,我应该保存在哪里遵循最佳实践的图像以及前端如何获得它?
  • 顺便说一句,我刚刚意识到我的函数中的 public_path 将它带到了 app / public ...但是在我的 laravel 项目中,我的根文件夹中有 public 文件夹,而不是 app /跨度>
  • 存储一路保存任何文件

标签: php laravel api file-upload postman


【解决方案1】:

在请求中的文件上使用 store 方法,并为公共符号链接存储目录

$extension = $file->getClientOriginalExtension();
$filename = $product->name . '.' . $extension;
$request->image->storeAs('uploads/image/products/', $filename);

然后运行php artisan storage:link

【讨论】:

  • 所以你说的是: $file = $request->image->store('uploads/image/products/'); $extension = $file->getClientOriginalExtension(); $filename = $product->name 。 '。' . $扩展; $product->image = $file;
  • 在移动文件之前不要保存扩展名,将文件名作为第二个参数传递给 storeAs 方法或检查我更新的答案
  • 我按照你说的做了,但仍然没有将文件保存在文件夹中:(可能是 POSTMAN 设置的东西?
猜你喜欢
  • 2020-01-02
  • 1970-01-01
  • 2020-09-10
  • 2014-03-13
  • 2020-07-15
  • 2018-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多