利用laravel+ajax实现文件上传功能方法示例
程序员文章站
2022-06-23 10:57:57
前言
大家都知道,早期的xmlhttprequest不支持文件上传,一般用第三方js插件或者flash,现在可以借助xmlhttprequest level 2 的for...
前言
大家都知道,早期的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
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。