ajax + Laravel 多文件上传
发布时间:2020-12-16 03:13:33 所属栏目:百科 来源:网络整理
导读:说明 前端使用了 jQuery.form.js 实现 Ajax 表单提交,后端使用的是著名的 Laravel(5.4)进行接收、存储,支持一次选择多个文件,选择确定后立即上传,并显示上传后的链接。 gif video 路由 C:L2017.11.15 MAMProottagMoonroutesweb.php Route::post(
说明前端使用了 jQuery.form.js 实现 Ajax 表单提交,后端使用的是著名的 Laravel(5.4)进行接收、存储,支持一次选择多个文件,选择确定后立即上传,并显示上传后的链接。 gif video
路由
Route::post('/multiUploadImg','UploadCtrl@multiUploadImg'); Route::get('/upload',function(){ return view('upload.main'); }); 前端
截屏before :
(权简风格 :) after :
html<form id="form_uploadImg" method="post" enctype="multipart/form-data"> <div class="file-field"> <div class="btn btn-primary btn-sm"> <span>Choose files</span> <input name="filesToUpload[]" id="input_multifileSelect" type="file" multiple> </div> </div> </form> <br><br><br> <div id="div_uploadedImgs"></div> !!! 注意下面这一句,必须要有一对方括号:[] <input name="filesToUpload[]" js$(document).ready(function() { $('#input_multifileSelect').on('change',function(){ var ajax_option= { url: "multiUploadImg",// type : 'post',默认是 form action success: function ( data ) { console.log( data ); showUploadedImgs( data.uploadedFiles ); } } $('#form_uploadImg').ajaxSubmit( ajax_option ); }); }); // 显示上传的图片 function showUploadedImgs( imgs ){ $.each( imgs,function(index,img ) { var pic = '<p><img src="{0}" alt="" /><br>{0} ( {1} - {2} )</p>'; pic = pic.format( baseUrl + 'public/' + img.savedFile,img.name,img.size ); $('#div_uploadedImgs').prepend( pic ); }); } // 为 String 类增加 format 函数 String.prototype.format = function() { var str = this; for (var i = 0; i < arguments.length; i++) { var reg = new RegExp("{" + i + "}","gm"); str = str.replace(reg,arguments[i]); } return str; } 控制器(Controller)
/** * 接收上传文件 * @param Request $request * @return array */ public function multiUploadImg( Request $request ){ // 重组数组,子函数 function reArrayFiles( $file_post ) { $file_ary = array(); $file_count = count($file_post['name']); $file_keys = array_keys($file_post); for ($i=0; $i<$file_count; $i++) { foreach ($file_keys as $key) { $file_ary[$i][$key] = $file_post[$key][$i]; } } return $file_ary; } $imgFiles = $_FILES['filesToUpload']; // 与前端页面中的 input name=“filesToUpload[]” 相对应 $uploadedFiles = array(); // 返回值 if(!empty($imgFiles)) { $img_desc = reArrayFiles( $imgFiles ); $destinationPath = 'storage/uploads/'; //public 文件夹下面建 storage/uploads 文件夹 foreach( $img_desc as $img ) { $savedFile = $destinationPath.date('YmdHis',time()).mt_rand().'.'.pathinfo( $img['name'],PATHINFO_EXTENSION ); move_uploaded_file($img['tmp_name'],$savedFile); $img['savedFile'] = $savedFile ; array_push( $uploadedFiles,$img ); } } $allowed_extensions = ["png","jpg","gif"]; // TODO 判断文件类型 return ['uploadedFiles' => $uploadedFiles ]; } response
note
downloadhttp://download.csdn.net/down... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |