【问题标题】:Lumen file upload流明文件上传
【发布时间】:2017-10-21 21:08:39
【问题描述】:

我有以下文件上传代码:

$picName = $request->file('cnicFrontUrl')->getClientOriginalName();
$picName = Carbon::now() . $picName;
$destinationPath = '/uploads/user_files/cnic';
$request->file('cnicFrontUrl')->move($destinationPath, $picName);

在我的公共文件夹中,我有uploads/user_files/cnic

我收到的异常:

{
  "message": "Could not move the file \"D:\\xampp\\tmp\\php2D1C.tmp\" to \"uploads/user_files/cnic\\2017-05-22 09:06:15cars.png\" ()",
  "status_code": 500
}

这里缺少什么?

【问题讨论】:

    标签: php laravel api file lumen


    【解决方案1】:

    “上传/user_files/cnic\2017-05-22 09:06:15cars.png\”

    问题是目标斜杠。 windows上的目录分隔符是\

    另外,: 不允许出现在文件名中

    【讨论】:

    • 那我应该改变什么?
    • 确保输入正确的目标路径。并检查该文件夹是否存在。见rename()
    • 啊,文件名中不允许出现“:”
    • 文件没有移动
    【解决方案2】:

    使用DIRECTORY_SEPARATOR而不是/或\,这将自动为您的平台获取独立的目录分隔符。

    例子

    <?php
    
    // will output "../public/logo.png" in unix or "..\\public\\logo.png"
    $path = ".." . DIRECTORY_SEPARATOR . "public" . DIRECTORY_SEPARATOR . "logo.png"
    echo $path;
    
    

    参考:php.net - Predefined Constants

    【讨论】:

      【解决方案3】:

      试试这个

              $picName = $request->file('image')->getClientOriginalName();
              $picName = uniqid() . '_' . $picName;
              $path = 'uploads' . DIRECTORY_SEPARATOR . 'user_files' . DIRECTORY_SEPARATOR . 'cnic' . DIRECTORY_SEPARATOR;
              $destinationPath = public_path($path); // upload path
              File::makeDirectory($destinationPath, 0777, true, true);
              $request->file('image')->move($destinationPath, $picName);
      

      我们不能这样设置文件名

      2017-05-22 09:06:15cars.png

      所以使用 uniqid() 函数来获取图像的唯一文件名

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-15
        • 2011-03-05
        • 1970-01-01
        • 2012-08-01
        • 1970-01-01
        • 2014-12-17
        • 2018-03-20
        • 2012-10-14
        相关资源
        最近更新 更多