利用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.ini实现Mysql导入数据库文件最大限制的修改方法
Dec 11 PHP
PHP+MySQL 制作简单的留言本
Nov 02 PHP
php简单开启gzip压缩方法(zlib.output_compression)
Apr 13 PHP
控制PHP的输出:缓存并压缩动态页面
Jun 11 PHP
PHP生成自适应大小的缩略图类及使用方法分享
May 06 PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
Oct 20 PHP
PHP5.2下preg_replace函数的问题
May 08 PHP
typecho插件编写教程(四):插件挂载
May 28 PHP
PHP+MySQL实现的简单投票系统实例
Feb 24 PHP
分享PHP-pcntl 实现多进程代码
Sep 30 PHP
PHP的mysqli_thread_id()函数讲解
Jan 24 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
Feb 15 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
yii数据库的查询方法
2015/12/28 PHP
Redis使用Eval多个键值自增的操作实例
2016/11/04 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
PHP实现的简单AES加密解密算法实例
2017/05/29 PHP
PHP类与对象后期静态绑定操作实例详解
2018/12/20 PHP
jquery Mobile入门—多页面切换示例学习
2013/01/08 Javascript
nodeType属性返回被选节点的节点类型介绍
2013/11/22 Javascript
一个实用的图片切换支持点击切换和自动轮播
2014/09/09 Javascript
JavaScript制作淘宝星级评分效果的思路
2020/06/23 Javascript
AngularJS使用angular.bootstrap完成模块手动加载的方法分析
2017/01/19 Javascript
angular forEach方法遍历源码解读
2017/01/25 Javascript
用ES6写全屏滚动插件的示例代码
2018/05/02 Javascript
快速解决vue-cli在ie9+中无效的问题
2018/09/04 Javascript
webpack 3.X学习之多页面打包的方法
2018/09/04 Javascript
Node.js之readline模块的使用详解
2019/03/25 Javascript
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
详解ES6 Promise的生命周期和创建
2019/08/18 Javascript
用webAPI实现图片放大镜效果
2020/11/23 Javascript
Python 初始化多维数组代码
2008/09/06 Python
python使用xlrd模块读写Excel文件的方法
2015/05/06 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
2020/04/23 Python
python RabbitMQ 使用详细介绍(小结)
2018/11/08 Python
Python常用特殊方法实例总结
2019/03/22 Python
python add_argument()用法解析
2020/01/29 Python
python json 递归打印所有json子节点信息的例子
2020/02/27 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
2020/05/22 Python
C#中的验证控件有几种
2014/03/08 面试题
JDBC操作数据库的基本流程是什么
2014/10/28 面试题
团工委书记自荐书范文
2013/12/17 职场文书
信息技术培训感言
2014/03/06 职场文书
汉语言文学毕业生自荐信范文
2014/03/24 职场文书
读书伴我成长演讲稿
2014/05/07 职场文书
教师节祝酒词
2015/08/11 职场文书
2019年感恩励志演讲稿(收藏备用)
2019/09/11 职场文书
六年级上册《闻官军收河南河北》的教学设计
2019/11/15 职场文书
使用GO语言实现Mysql数据库CURD的简单示例
2021/08/07 Golang