• laravel 文件上传的写法


    文件系统存储

    文件系统的配置文件位于 config/filesystems.php 。
    在这个文件中你可以配置所有「磁盘」。
    每个磁盘代表特定的存储驱动及存储位置。
    每种支持的驱动程序的示例配置都包含在配置文件中。

    公共磁盘链接

    一般文件上传如果上传在本地服务器,目录都不在public目录下,都是public的上一级目录storage下的app目录中,而这个目录是通过url访问不到的(URL地址是从public下算起)所以需要在public目录下建立storage/app下的软链接(linux叫法,windows叫快捷方式)

    php artisan storage:link

    需要使用的类

    1 use IlluminateHttpRequest;
    2 use IlluminateHttpUploadedFile;

    获取上传的文件

    1 $file = $request->file('photo');
    2 $file = $request->photo;

    判断 & 验证

    //判断请求中是否存在name为photo的文件
    if ($request->hasFile('photo')) {
        
    }
    
    //验证上传的文件是否有效,实际上只是使用is_uploaded_file校验是否是http表单post过来的
    if ($request->file('photo')->isValid()) {
        
    }
    

    文件路径 & 扩展名  

    UploadedFile 类还包含访问文件的全路径和扩展名的方法。 extension 方法会根据文件内容判断文件的扩展名。该扩展名可能会和客户端提供的扩展名不同:

    $path = $request->photo->path();
    
    $extension = $request->photo->extension();
    $extension = $request->file('photo')->getClientOriginalExtension()

    存储上传文件  

    要存储上传的文件,先配置好 文件系统。你可以使用 UploadedFile 的 store 方法把上传文件移动到你的某个磁盘上,该文件可能是本地文件系统中的一个位置,甚至像 Amazon S3 这样的云存储位置。
    store 方法接受相对于文件系统配置的存储文件根目录的路径。这个路径不能包含文件名,因为系统会自动生成唯一的 ID 作为文件名。
    store 方法还接受可选的第二个参数,用于存储文件的磁盘名称。这个方法会返回相对于磁盘根目录的文件路径:

    $path = $request->photo->store('images');
    
    $path = $request->photo->store('images', 's3');
    

    如果你不想自动生成文件名,那么可以使用 storeAs 方法,它接受路径、文件名和磁盘名作为其参数:  

    $path = $request->photo->storeAs('images', 'filename.jpg');
    
    $path = $request->photo->storeAs('images', 'filename.jpg', 's3');
    

      

    if($request->hasFile('file')&&$request->file('file')->isValid()){
                $file=$request->file('file');
                $allowed_extensions = ["png", "jpg", "gif","jpeg"];
                $extension = $file->getClientOriginalExtension();
                if (!in_array($extension, $allowed_extensions)) {
                    return $this->error('只能上传'.implode('、', $allowed_extensions).'格式的图片.');
                }else{
                    $destinationPath = 'uploads/weixin/';
                    $preFileName = md5(time().rand(1000,9999));
                    $fileName=$preFileName.'.'.$extension;
                    $file->move($destinationPath,$fileName);
                    $filePath = asset($destinationPath.$fileName);//带着域名的路径
                    
                    
                    return $this->apiSuccess('上传图片素材成功.', ['data'=>$result,'file_path'=>asset($destinationPath.$fileName)]);
                }
            }else{
                return $this->error('文件上传失败');
            }
    

      

    $request->file('file')->store('Uploads');
    

      

  • 相关阅读:
    二叉搜索树
    自己课题的任务
    查找
    排序
    python快速教程
    塌下心来,慢慢积累~
    生命只有一次,你可以用它来做一点伟大的事情
    Python 编程规范-----转载
    Some regret....
    Discussing the scenery in the program of 863 with Doctor Zhang!
  • 原文地址:https://www.cnblogs.com/dreamboycx/p/15238751.html
Copyright © 2020-2023  润新知