Thinkphp5如何实现图片、音频和视频文件的上传功能

发布时间 - 2021-06-03 00:00:00    点击率:

下面由thinkphp框架教程栏目给大家介绍thinkphp5实现图片、音频和视频文件的上传功能方法,希望对需要的朋友有所帮助!

首先是同步上传,最为基础的上传的方式,点击表单提交之后跳转那种。

如下前端代码




  
  上传文件


  

注意这里的enctype必须enctype="multipart/form-data",方案必须是post。

后端代码直接拿tp5的官网示例代码吧:

 public function upload(){
  // 获取表单上传文件 例如上传了001.jpg
  $file = request()->file('image');
  // 移动到框架应用根目录/public/uploads/ 目录下
  if($file){
    $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads');
    if($info){
      // 成功上传后 获取上传信息
      // 输出 jpg
      echo $info->getExtension();
      // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
      echo $info->getSaveName();
      // 输出 42a79759f284b767dfcb2a0197904287.jpg
      echo $info->getFilename();
    }else{
      // 上传失败获取错误信息
      echo $file->getError();
    }
  };
 }

后面发现自己做的好简单,于是改进了前端代码,并且前端代码实现了文件类型校验,将同步改为ajax异步提交,同时改为formdata提交文件数据,后台代码没有太大变化,返回了提交文件的链接,而前端预览只能预览图片。改过之后的前端代码为




  
  上传文件


  

后端代码改进了一下

public function uploadAjax(){
    // 获取表单上传文件 例如上传了001.jpg
  $file = request()->file('image');
  $test=request()->post("test");
  $src=[];//返回文件路径
  // 移动到框架应用根目录/public/uploads/ 目录下
  if($file){
    $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads');
    if($info){
      // 成功上传后 获取上传信息
      // 输出 jpg
       $info->getExtension();
      // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
       $info->getSaveName();
      // 输出 42a79759f284b767dfcb2a0197904287.jpg
       $info->getFilename();
       $src["src"]=DS.'public'.DS.'uploads'.DS.$info->getSaveName();
    }else{
      // 上传失败获取错误信息
       $file->getError();
    }
  };
    return json_encode($src);
  }

细节方面,比如上传之后报错返回信息没有做处理。

整体实现就是这样,作为一个常用的业务场景,这个本身还有很多改进的余地,比如删除已经上传的文件或者校验文件是否已经上传,如果上传不能二次上传或者删除掉前面上传的。当然如果文件名称不做处理而是原名称上传,则上传之后会覆盖原文件。

相关推荐:最新的10个thinkphp视频教程


# 上传  # 上传文件  # 表单  # 错误信息  # 传了  # 后端  # 目录下  # 太大  # 改进了  # 给大家 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: java中使用zxing批量生成二维码立牌  jQuery中的100个技巧汇总  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  潮流网站制作头像软件下载,适合母子的网名有哪些?  BootStrap整体框架之基础布局组件  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  如何在服务器上三步完成建站并提升流量?  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  如何基于云服务器快速搭建个人网站?  PHP正则匹配日期和时间(时间戳转换)的实例代码  中山网站制作网页,中山新生登记系统登记流程?  海南网站制作公司有哪些,海口网是哪家的?  js实现点击每个li节点,都弹出其文本值及修改  javascript读取文本节点方法小结  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  如何快速生成橙子建站落地页链接?  Laravel如何处理表单验证?(Requests代码示例)  QQ浏览器网页版登录入口 个人中心在线进入  七夕网站制作视频,七夕大促活动怎么报名?  Laravel如何使用withoutEvents方法临时禁用模型事件  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  公司网站制作价格怎么算,公司办个官网需要多少钱?  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  Laravel怎么连接多个数据库_Laravel多数据库连接配置  香港网站服务器数量如何影响SEO优化效果?  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  如何在自有机房高效搭建专业网站?  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  iOS UIView常见属性方法小结  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  Java垃圾回收器的方法和原理总结  Laravel PHP版本要求一览_Laravel各版本环境要求对照  北京企业网站设计制作公司,北京铁路集团官方网站?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】  Laravel如何与Pusher实现实时通信?(WebSocket示例)  智能起名网站制作软件有哪些,制作logo的软件?  Laravel如何使用Collections进行数据处理?(实用方法示例)  动图在线制作网站有哪些,滑动动图图集怎么做?  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  jQuery validate插件功能与用法详解  大学网站设计制作软件有哪些,如何将网站制作成自己app?  HTML 中动态设置元素 name 属性的正确语法详解