layui多文件上传讲解_Layui 多文件上传 SSH

jsp 页面

pageEncoding="UTF-8"%>

Insert title here

选择多文件

文件名大小状态操作

开始上传

layui.use('upload', function(){

var $ = layui.jquery

,upload = layui.upload;

//多文件列表示例

var demoListView = $('#demoList')

,uploadListIns = upload.render({

elem: '#testList'

,url: '/Lol_uploadFile.action'

,accept: 'file'

,data:{id:123}   //还可以传参,参数id=123

,multiple: true

,auto: false

,bindAction: '#testListAction'

,success:function(msg) {

$.each($.parseJSON(msg.jsonData),function(i,item){

if (item.fileName==1) {

alert("ok");

} else {

alert("ok");

}

});

}

,choose: function(obj){

var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列

//读取本地文件

obj.preview(function(index, file, result){

var tr = $(['

'

,'

'+ file.name +''

,'

'+ (file.size/1014).toFixed(1) +'kb'

,'

等待上传'

,'

'

,'重传'

,'删除'

,'

'

,'

'].join(''));

//单个重传

tr.find('.demo-reload').on('click', function(){

obj.upload(index, file);

});

//删除

tr.find('.demo-delete').on('click', function(){

delete files[index]; //删除对应的文件

tr.remove();

uploadListIns.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选

});

demoListView.append(tr);

});

}

,done: function(res, index, upload){

$.each($.parseJSON(res.jsonData),function(i,item){

if(item.success==1) {//上传成功

var tr = demoListView.find('tr#upload-'+ index)

,tds = tr.children();

tds.eq(2).html('上传成功');

tds.eq(3).html(''); //清空操作

return delete this.files[index]; //删除文件队列已经上传成功的文件

}

});

this.error(index, upload);

}

,error: function(index, upload){

var tr = demoListView.find('tr#upload-'+ index)

,tds = tr.children();

tds.eq(2).html('上传失败');

tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //显示重传

}

});

});

action方法

需要添加两个属性

List file;

List fileFileName;

//记住要添加对应的get、set

public String updateImg() throws Exception {

JSONArray array = new JSONArray();

JSONObject obj = new JSONObject();

if(UploadFile.uploadFileBase(0, file, fileFileName, UPLOADDIR)) {

BusinessImage bsnImg = new BusinessImage();

bsnImg.setId(Integer.parseInt(imgId));

bsnImg.setImgUrl(UPLOADDIR+"/"+fileFileName.get(0));

businessImageServiceImpI.updateBusinessImageAjax(bsnImg);

obj.put("success", "1");

} else {

obj.put("success", "0");

}

array.put(obj);

jsonData = array.toString();

System.out.println(jsonData);

return SUCCESS;

}

图片上传工具类

package com.gxuwz.core.util;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.List;

import org.apache.struts2.ServletActionContext;

public class UploadFile {

@SuppressWarnings("deprecation")

public static boolean uploadFileBase(int i,List

file,List fileFileName,String uploadPath) throws Exception

{

try {

InputStream in = new FileInputStream(file.get(i));

String dir = ServletActionContext.getRequest().getRealPath(uploadPath);

File fileLocation = new File(dir);

//此处也可以在应用根目录手动建立目标上传目录

if(!fileLocation.exists()){

boolean isCreated  = fileLocation.mkdir();

if(!isCreated) {

//目标上传目录创建失败,可做其他处理,例如抛出自定义异常等,一般应该不会出现这种情况。

return false;

}

}

String fileName=fileFileName.get(i);

File uploadFile = new File(dir, fileName);

OutputStream out = new FileOutputStream(uploadFile);

byte[] buffer = new byte[1024 * 1024];

int length;

while ((length = in.read(buffer)) > 0) {

out.write(buffer, 0, length);

}

in.close();

out.close();

return true;

} catch (FileNotFoundException ex) {

ex.printStackTrace();

return false;

} catch (IOException ex) {

ex.printStackTrace();

return false;

}

}

}

如果不会配struct.xml 请往下看

jsonData

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/558188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV:H1.type() == H2.type() H1.depth() == CV_32F

如题: E/cv::error(): OpenCV(4.1.0) Error: Assertion failed (H1.type() H2.type() && H1.depth() CV_32F) in compareHist, file /build/master_pack-android/opencv/modules/imgproc/src/histogram.cpp, line 1936 E/org.opencv.imgproc: imgproc::co…

css 外弧_css 伪类实现弧形

在实现页面五花八门的有特色的ui时,我们有时会遇到要用实现一个弧形,而这样的弧形要怎么实现呢?用图片?不太优雅,这样就要无故多加载一张图片了,这里来说说怎么用css的after伪类来实现弧形。总思路&#xf…

C++期末实践程序设计与数组作为参数的注意事项

目录小表弟发来的求助信号要点代码文件头文件Student.h源文件Student.cppmain.c执行结果c数组特性以及数组做形参的特点数组试验数组特殊性质不允许拷贝和赋值数组是通常被转化成指针使用数组形参多种写法代理模式MVC模式小表弟发来的求助信号 并补充说要5种写法才算过关。 要…

sgm3157功能_SGM3157_SGM3157供应商_价格_Datasheet_pdf资料-IC资料网

SGM31574.5惟 Low Voltage SPDT Analog SwitchSGMICROSG Micro CorpLow Voltage SPDT Analog Switch in 6-Pin SC70SGMICROSG Micro Corp4.5惟 Low Voltage SPDT Analog SwitchSGMICROSG Micro CorpFLAT WASHERS NYLON FIBREetc2List of Unclassifed Manufacturers70 MHz Bandp…

windows 7远程桌面和被远程连接电脑启动远程桌面服务

目录远程桌面连接开启远程桌面服务(被连电脑)配置启动远程桌面服务远程桌面连接 这部分主要讲解如何通过一台windows 电脑的远程桌面程序连接"远程"电脑桌面。前提是被连的那台电脑已开启远程桌面服务。远程桌面服务开启之后,可以…

desktop docker 无法卸载_关于Docker:Docker – 无法移除死容器

我无法删除死容器,它在重新启动Docker服务后再次出现。docker ps -aCONTAINER ID STATUS11667ef16239 Dead然后docker rm -f 11667ef16239然后,当我运行docker ps -a时,没有Docker容器显示。docker ps -aCONTAINER ID …

git 命令详解和Android Studio代码管理工具

目录前言git命令上传项目一、核心操作二、解决冲突三、情景举例四、查看ssh密钥五、克隆远程项目六、回退某个操作七、和远程分支建立关联八、删除文件九、远程仓储十、多人协作十一、分支策略十二、其他Android Studio代码管理控制前言 相比SVN CVS的管理模式,git…

表单和字都居中_APP 分享 | 6 款黑科技工具,低调收藏,每一款都很强大!

iSlide 简单、高效地制作PPT使用环境: Windows使用要求: Office 2010 及以上版本授权状况: 无广告 有付费功能官网地址: www.islide.ccSlide是一款基于PowerPoint的插件工具,功能十分强大,高效做PPT必备利器一键优化:将PPT中不规则的字体,段落,色彩,参考线…

Android studio gradle task list 不显示问题

问题描述 新电脑安装android studio后,导入工程,各种配置都弄好变更好,出现了如下情况: 之前习惯的gradle task 不在列表中,好不习惯。 正常期望如下: 处理方法 快捷键Ctrl Alt S或者 file -> se…

python flask高级编程之restful_python Flask实现restful api service

一直在用node.js做后端,要逐步涉猎大数据范围,注定绕不过python,因此决定把一些成熟的东西用python来重写,一是开拓思路、通过比较来深入学习python;二是有目标,有动力,希望能持之以恒的坚持下去…

Android Studio Gradle输出信息乱码

在更换android studio 版本之后,一般windows 版本在项目构建过程中,gradle 相关的信息输出,会出现乱码,基本上明知是字符编码的问题,但看着就是不爽,例如下面这的情形: ע: ijЩ�&am…

python tkinter布局混用_python tkinter布局界面如何实现?

当我们自己走入一个互联网窗口里,寻找内容,清晰而明朗,这就是涉及了一个页面布局的知识,不只是一个站点,一个网页,设置是一个窗体都是有清晰的布局,语言的编写,就是为了效率执行而存…

Edge 修改字符编码(详细图文)

Microsoft Edge 版本 97.0.1072.62 (官方内部版本) (64 位) 前言 如下图,在访问页面时出现乱码,而且一直返回的内容编码是UTF-8,但Edge没找快捷的编码方式选择 方法一 Internet Explorer 模式加载 打开Edge浏览器 点击Edge右上角三点 点…

json tcl_确定TCL中变量的类型

Tcl的变量没有类型(除了他们是否真的变量的关联数组 - 即使用$foo(bar)语法 - FO r你使用array exists)但Tcl的值。好吧,有点。 Tcl可以在不同类型之间进行变异,因为它认为合适,并且不公开这些信息[*];你所能做的就是检查一个值是否符合特定的…

【Android】Unresolved reference: databinding

检查配置 对应module的build.gradle是否添加了databinding配置 buildFeatures {viewBinding true } // 或者 dataBinding {enabled true }检查包名(特别注意) 报错的包名是否和app包名一致。 例如app包名是 com.xxx.app 而报错的代码中binding的包名路径不在app包名下&…

水塔清洗机器人_最全的中央空调清洗流程

一、施工方案和技术措施项目总体施工纲要积极主动与客户沟通协调。做好现场的勘查工作:严密、详细、周全。掌握客户的动态,不断完善施工进度表。分项目制定严密的施工方案、计划和管理措施。制定详尽的突发事件应急预案。建立安全责任制&…

【Android】ConstraintLayout中RecyclerView 的底部数据显示不全以及覆盖其他View

文章目录xml布局内容预览画面(看着没毛病)&#xff1a;实际画面&#xff1a;解决办法说明xml布局内容 <?xml version"1.0" encoding"utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android"http://schemas.android.com/a…

python中forward的作用_基于numpy的前馈神经网络(feedforward neural network)

***这几天在上Andrew Ng教授开的Coursera系列课程Deep Learning&#xff0c;总觉得光是看视频和做作业还不够&#xff0c;还是得自己动手写写代码&#xff0c;亲自实现课程里提到的算法内容&#xff0c;于是便有了这篇博客&#xff0c;作为自己入门深度学习的里程碑吧。前馈神经…

Charles抓取HTTPS Windows Android iOS 图文详细

文章目录背景操作原理windows 安装CharlesCharles配置第一步&#xff1a;配置HTTP代理&#xff0c;这步与抓取HTTP请求是一样第二步&#xff1a;配置SSL代理第三步 &#xff1a;为手机配置代理iPhone 代理配置Android 代理配置第四步&#xff1a;安装根证书iPhone 安装charles证…

css线条伸缩_CSS3弹性伸缩布局之box布局

CSS3弹性伸缩布局简介2009年&#xff0c;W3C提出了一种崭新的方案----Flex布局(即弹性伸缩布局)&#xff0c;它可以简便、完整、响应式地实现各种页面布局&#xff0c;包括一直让人很头疼的垂直水平居中也变得很简单地就迎刃而解了。但是这个布局方式还处于W3C的草案阶段&#…