利用laravel+ajax实现文件上传功能方法示例


Posted in PHP onAugust 13, 2017

前言

大家都知道,早期的XMLHttpRequest不支持文件上传,一般用第三方js插件或者flash,现在可以借助XMLHttpRequest Level 2 的FormData对象实现二进制文件上传,正好最近工作中遇到了这个需求,所以本文就来给大家总结下实现的方法,话不多说了,来一起看看详细的介绍吧。

示例代码

@extends('layouts.art')
@section('content')

<form class="form-horizontal" id="avatar"> 
   {{ csrf_field() }}
 <div class="form-group">
 <label for="inputEmail3" class="col-sm-2 control-label">名字</label>
 <div class="col-sm-8">
  <input type="title" class="form-control" id="title" name="title">
 </div>
 </div>


 <div class="form-group">
 <label for="inputEmail3" class="col-sm-2 control-label">头像</label>
 <div class="col-sm-8">
  <input type="file" class="form-control" id="title" name="photo">
 </div>
 </div>


 <div class="form-group">
 <div class="col-sm-offset-2 col-sm-10">
  <a class="btn btn-default" onclick="uploadInfo()">上传</a>
 </div>
 </div>
</form>

<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script> 
<script type="text/javascript"> 
function uploadInfo() { 
  var formData = new FormData($("#avatar")); 
  $.ajax({ 
   url: "{{url('photo')}}",
   type: 'POST', 
   data: formData, 
   contentType: false, 
   processData: false, 
   success: function (returndata) { 
    console.log(returndata); 
   }, 
   error: function (returndata) { 
    console.log(returndata); 
   } 
  }); 
} 

</script>

@endsection
//生成路径,图片存储
  $ext = $request->photo->getClientOriginalExtension();
  $cover_path = "images/album/covers/" . time() . $ext; 
  $name = "photo".time();
  $src = "images/album/photos/". $name .".jpg";
  Image::make($request->photo)->save(public_path($src));*/

 //批量上传图片

  foreach ($request->photo as $key => $value) {
   //生成路径,图片存储
   $prefix = "photo".mt_rand(1,1000);
   $Origname = $value->getClientOriginalName();
   $name = $prefix.$Origname;
   $src = "images/album/photos/".$name;
   $realPath = $value->getRealPath();
   Storage::disk('uploads')->put($src,file_get_contents($realPath));
  }

更多参考

https://developer.mozilla.org/zh-CN/docs/Web/API/FormData/UsingFormDataObjects

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/UsingXMLHttpRequest#Submittingformsanduploading_files

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
PHP项目开发中最常用的自定义函数整理
Dec 02 PHP
手把手教你打印出PDF(关于fpdf的简单应用)
Jun 25 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
Jan 07 PHP
Laravel 5 框架入门(四)完结篇
Apr 09 PHP
php实现对两个数组进行减法操作的方法
Apr 17 PHP
php函数重载的替代方法--伪重载详解
May 08 PHP
php基于CodeIgniter实现图片上传、剪切功能
May 14 PHP
php简单中奖算法(实例)
Aug 15 PHP
PHP实现字符串翻转功能的方法【递归与循环算法】
Nov 03 PHP
PhpStorm本地断点调试的方法步骤
May 21 PHP
PHP实现百度人脸识别
May 06 PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
Oct 11 PHP
Laravel5.5新特性之友好报错以及展示详解
Aug 13 #PHP
php数据序列化测试实例详解
Aug 12 #PHP
PHP新特性之字节码缓存和内置服务器
Aug 11 #PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
Aug 11 #PHP
如何修改Laravel中url()函数生成URL的根地址
Aug 11 #PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
Aug 11 #PHP
基于Laravel5.4实现多字段登录功能方法示例
Aug 11 #PHP
You might like
珊瑚虫IP库浅析
2007/02/15 PHP
PHP strtok()函数的优点分析
2010/03/02 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
2013/06/24 PHP
PHP错误Cannot use object of type stdClass as array in错误的解决办法
2014/06/12 PHP
php进程间通讯实例分析
2016/07/11 PHP
浅谈PHPANALYSIS提取关键字
2019/03/08 PHP
javascript日期对象格式化为字符串的实现方法
2014/01/14 Javascript
Node.js编码规范
2014/07/14 Javascript
原生js仿jq判断当前浏览器是否为ie,精确到ie6~8
2014/08/30 Javascript
JavaScript实现数字数组按照倒序排列的方法
2015/04/06 Javascript
JQuery boxy插件在IE中边角图片不显示问题的解决
2015/05/20 Javascript
js控制文本框输入的字符类型方法汇总
2015/06/19 Javascript
javascript闭包(Closure)用法实例简析
2015/11/30 Javascript
基于JS实现类似支付宝支付密码输入框
2016/09/02 Javascript
基于JavaScript实现复选框的全选和取消全选
2017/02/09 Javascript
JavaScript继承与多继承实例分析
2018/05/26 Javascript
Angularjs中的$apply及优化使用详解
2018/07/02 Javascript
jQuery实现的别踩白块小游戏完整示例
2019/01/07 jQuery
详解javascript 变量提升(Hoisting)
2019/03/12 Javascript
微信小程序搭建自己的Https服务器
2019/05/02 Javascript
vue filter 完美时间日期格式的代码
2019/08/14 Javascript
微信小程序自定义tabBar在uni-app的适配详解
2019/09/30 Javascript
vue项目中监听手机物理返回键的实现
2020/01/18 Javascript
element中table高度自适应的实现
2020/10/21 Javascript
使用typescript快速开发一个cli的实现示例
2020/12/09 Javascript
[44:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第二局
2016/03/03 DOTA
详解python上传文件和字符到PHP服务器
2017/11/24 Python
Python实现的计算器功能示例
2018/04/26 Python
python获得命令行输入的参数的两种方式
2020/11/02 Python
美国领先的男士和女士内衣购物网站:Freshpair
2019/02/25 全球购物
顺丰快递Java软件工程师面试题
2015/07/31 面试题
服装公司总经理岗位职责
2013/11/30 职场文书
探矿工程师自荐信
2014/01/24 职场文书
《大自然的语言》教学反思
2014/04/08 职场文书
2015年度销售个人工作总结
2015/03/31 职场文书
惊天动地观后感
2015/06/10 职场文书