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

本篇文章为大家展示了Thinkphp5实现图片、音频和视频文件的上传功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

网站的建设成都创新互联公司专注网站定制,经验丰富,不做模板,主营网站定制开发.小程序定制开发,H5页面制作!给你焕然一新的设计体验!已为玻璃贴膜等企业提供专业服务。

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




  
  上传文件


  
    
    
       

注意这里的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提交文件数据,后台代码没有太大变化,返回了提交文件的链接,而前端预览只能预览图片。改过之后的前端代码为




  
  上传文件


  
    
  
  

  点击上传   

       

     var btn = document.getElementById("btn");   var file=document.getElementById("file");   var promise=["png","jpg","jpeg","gif","mp3","mp4","svg"];   file.onchange=function(){     var name=file.value;     var ext=name.substring(name.lastIndexOf(".") + 1).toLowerCase();     var res=promise.indexOf(ext);     if (res<0) {       alert("文件格式不正确");       document.getElementById("btn").disabled=true;     }else{       document.getElementById("btn").disabled=false;     }   }   btn.onclick = function() {     var val=document.getElementById("file").value;     if (val.length==0) {       return;     }     var fromData = new FormData(document.forms[0]);     fromData.append("test", "formdata");     var oAjax = new XMLHttpRequest();     oAjax.open('post', "uploadAjax", true);     oAjax.send(fromData);     oAjax.onreadystatechange = function() {       if (oAjax.readyState == 4) {         if (oAjax.status >= 200 && oAjax.status < 300 || oAjax.status == 304) {           console.log(oAjax.responseText);           var data=JSON.parse(oAjax.responseText);           document.getElementById("see").setAttribute("src","/thinkphp"+data.src);           document.getElementById("file").value="";         } else {           console.log(oAjax.status);         }       }     };   }   

后端代码改进了一下

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);
  }

上述内容就是Thinkphp5实现图片、音频和视频文件的上传功能,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。


网站名称:Thinkphp5实现图片、音频和视频文件的上传功能
转载注明:http://ybzwz.com/article/ijihpp.html