利用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 相关文章推荐
php5编程中的异常处理详细方法介绍
Jul 29 PHP
基于PHP的cURL快速入门教程 (小偷采集程序)
Jun 02 PHP
php导入导出excel实例
Oct 25 PHP
php中autoload的用法总结
Nov 08 PHP
浅析PHP程序设计中的MVC编程思想
Jul 28 PHP
ThinkPHP中RBAC类的四种用法分析
Nov 24 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
Jun 10 PHP
Zend Framework教程之Zend_Controller_Plugin插件用法详解
Mar 07 PHP
浅谈PHP中的错误处理和异常处理
Feb 04 PHP
PHP使用redis消息队列发布微博的方法示例
Jun 22 PHP
visual studio code 调试php方法(图文详解)
Sep 15 PHP
PHP实现 APP端微信支付功能
Jun 22 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
PHP 执行系统外部命令 system() exec() passthru()
2009/08/11 PHP
PHP中如何实现常用邮箱的基本判断
2014/01/07 PHP
PHP+AJAX实现投票功能的方法
2015/09/28 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
PHP+MySQL存储数据常见中文乱码问题小结
2016/06/13 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
2017/07/09 PHP
laravel5.4生成验证码的实例讲解
2017/08/05 PHP
PHP 计算两个特别大的整数实例代码
2018/05/07 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
JS性能优化笔记搜索整理
2013/08/21 Javascript
jquery 隐藏与显示tr标签示例代码
2014/06/06 Javascript
JavaScript前端开发之实现二进制读写操作
2015/11/04 Javascript
原生js实现数字字母混合验证码的简单实例
2015/12/10 Javascript
JavaScript字符串对象
2017/01/14 Javascript
js实现日历的简单算法
2017/01/24 Javascript
jQuery实现搜索页面关键字的功能
2017/02/16 Javascript
详解nodejs通过代理(proxy)发送http请求(request)
2017/09/22 NodeJs
详解Angular-ui-BootStrap组件的解释以及使用
2018/07/13 Javascript
js防抖和节流的深入讲解
2018/12/06 Javascript
js实现一个页面多个倒计时的3种方法
2019/02/25 Javascript
JS数组方法reverse()用法实例分析
2020/01/18 Javascript
Vue SSR 即时编译技术的实现
2020/05/06 Javascript
[00:31]DOTA2荣耀之路7:Miracle-空血无敌斩
2018/05/31 DOTA
[02:46]完美世界DOTA2联赛PWL DAY4集锦
2020/11/03 DOTA
尝试使用Python多线程抓取代理服务器IP地址的示例
2015/11/09 Python
python调用摄像头拍摄数据集
2019/06/01 Python
python导包的几种方法(自定义包的生成以及导入详解)
2019/07/15 Python
使用python实现画AR模型时序图
2019/11/20 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
Probikekit欧盟:在线公路自行车专家
2019/07/12 全球购物
NET程序员上机面试题
2015/05/23 面试题
财务会计专业推荐信
2013/11/30 职场文书
外语系大学生自荐信范文
2014/03/01 职场文书
党的群众路线教育实践活动学习心得体会
2014/03/03 职场文书
2015年英语教学工作总结
2015/05/25 职场文书
Python各协议下socket黏包问题原理
2022/04/12 Python