jsp+servlet+ajaxfileupload.js 实现异步上传

jsp异步上传文件 使用jsp + servlet 利用ajaxFileupload.js插件实现异步文件上传 立即下载
java代码:
package yaSoft.Util;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.FileUtils;

import com.ya.pub.conf.FileUploadPath;

/**
 * 新闻内容没有图片时
 * 上传图片
 * @time 2014-12-29 18:00:25
 * @author lmc
 *
 */
@SuppressWarnings("serial")
public class InformationPicRecommend extends HttpServlet{
	final long MAX_SIZE = 10 * 1024 * 1024;// 设置上传文件最大为 10M
//	   // 允许上传的文件格式的列表
//    final String[] allowtype = new String[] {"jpg","jpeg","gif","txt","doc","docx","mp3","wma","m4a","xls"};
//
//    public InformationPicRecommend() {
//        super();
//    }
//
//    public void destroy() {
//        super.destroy(); 
//    }

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doPost(request, response);
	}

	@SuppressWarnings("rawtypes")
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
			response.setContentType("text/html");
	        // 设置字符编码为UTF-8, 这样支持汉字显示
	        response.setCharacterEncoding("UTF-8");
	        // 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload
	        DiskFileItemFactory dfif = new DiskFileItemFactory();
	        dfif.setSizeThreshold(4096);// 设置上传文件时用于临时存放文件的内存大小,这里是4K.多于的部分将临时存在硬盘
	    	String ROOT_PATH = FileUploadPath.getKindPath();//缓存临时文件夹
			String path = ROOT_PATH+"news/"+TimeUtil.getImagesTime()+"/image";
			File directory = new File(path);
			if (!directory.exists()) {
				FileUtils.forceMkdir(directory);
			}
	        dfif.setRepository(directory);// 设置存放临时文件的目录,web根目录下的images目录
	        // 用以上工厂实例化上传组件
	        ServletFileUpload sfu = new ServletFileUpload(dfif);
	        // 设置最大上传尺寸
	        sfu.setSizeMax(MAX_SIZE);
	        PrintWriter out = response.getWriter();
	        // 从request得到 所有 上传域的列表
	        List fileList = null;
	        try {
	            fileList = sfu.parseRequest(request);
	        } catch (FileUploadException e) {// 处理文件尺寸过大异常
	            if (e instanceof SizeLimitExceededException) {
	                out.print("{message:'文件尺寸超过规定大小:"+MAX_SIZE+"字节'}");
	                return;
	            }
	            e.printStackTrace();
	        }
	        // 没有文件上传
	        if (fileList == null || fileList.size() == 0) {
	            out.print("{message:'请选择上传文件'}");
	            return;
	        }
	        // 得到所有上传的文件
	        Iterator fileItr = fileList.iterator();
	        // 循环处理所有文件
	        while (fileItr.hasNext()) {
	            FileItem fileItem = null;
	            String path2 = null;
	            long size = 0;
	            // 得到当前文件
	            fileItem = (FileItem) fileItr.next();
	            // 忽略简单form字段而不是上传域的文件域(<input type="text" />等)
	            if (fileItem == null || fileItem.isFormField()) {
	                continue;
	            }
	            // 得到文件的完整路径
	            path2 = fileItem.getName();
	            // 得到文件的大小
	            size = fileItem.getSize();
	            if ("".equals(path) || size == 0) {
	                out.print("{message:'请选择上传文件'}");
	                return;
	            }
	            //原来的文件名
	            path=path+"/"+TimeUtil.getPayTime()+path2.substring(path2.indexOf("."), path2.length());
	            try {
	                // 保存文件
	                fileItem.write(new File(path));
	                response.setStatus(200);
	                out.print("{message:\"" + path.substring(path.indexOf("kindfile"), path.length()) + "\"}");
	            } catch (Exception e) {
	                e.printStackTrace();
	            }
				out.flush();
				out.close();
	}
 }
}
web.xml
	<servlet-name>InformationPicRecommend</servlet-name>
		<servlet-class>yaSoft.Util.InformationPicRecommend</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>InformationPicRecommend</servlet-name>
		<url-pattern>/InformationPicRecommend</url-pattern>
	</servlet-mapping>
jsp代码:
<%@ page contentType="text/html;charset=utf-8" errorPage=""%>
<%@ page import="com.edu.information.*"%>
<%@ page import="java.util.ArrayList"%>
<%@ page import="yaSoft.Logic.*,yaSoft.Util.common_util"%>
<%@ page import="java.util.*,java.util.Iterator"%>
<%@ page import="com.ya.pub.conf.FileUploadPath"%>
<%
  String id = PageCommon.getReqValue(request, "id");
  String tab = PageCommon.getReqValue(request, "tab");//当前主画面的编号
  Map<String, Object> rsltLZ = new HashMap<String, Object>();//获取新闻的Map
  //新闻ID
  rsltLZ.put("id", id);
  String infoContent = "";
  infoContent = InformationService.getInformationPic(rsltLZ);
  List<String> imgSrcs = new ArrayList<String>(); 
  imgSrcs = common_util.getImgSrc(infoContent);
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<TITLE></TITLE>
<META http-equiv=Content-Type content="text/html;charset=utf-8">
<script src="../js/jquery-1.8.3.js" type="text/javascript"></script>
<script src="../js/ajaxfileupload.js" type="text/javascript"></script>

</HEAD>
<script type="text/javascript">
//当前画面编号
var funs = parent.App.getFuns('<%=tab%>');
//确定推荐
function Recommend(type){
	var picUrl = '';
	if(type==1){
		//上传的图片
		picUrl=document.getElementById("pic_view").src;
	}else{
		//新闻内容提取图片
		var radio=document.getElementsByName("radio");
		 for(var i=0;i < radio.length;i++)
		   {
		     if(radio[i].checked){
		    	  	// picUrl=radio[i].value; //这个是value
			    var str = "src_"+(i+1);
			    picUrl = document.getElementById(str).src;
		     }
		   }
	}
	if (funs) {
		funs.infoQXEdit_form_recomForm("",picUrl);
		funs.ns._data.curRecom = 'jsp';//定义全局变量,用于区分当前点击的推荐时app还是jsp
	} 
}
//上传新闻配图
function uploadPic(){
		if($("#pic_file").val() == '')
		if (funs) {
			funs.tuijianTishi();
			return;
		}
		 $.ajaxFileUpload({
			url : '../InformationPicRecommend',
			secureuri : false,// 一般设置为false
			fileElementId : 'pic_file',// 文件上传空间的id属性 <input type="file" id="file"
			// name="file" />
			dataType: 'json',
			success : function(data) // 服务器成功响应处理函数
			{
				$("#picFile").css("display","none");
				var pic = document.getElementById("pic_view");
				pic.src = "../"+data.message;
				$("#r_u").val(pic.src);
				$("#uploadPic").css("display","block");
			},
			error : function(e)// 服务器响应失败处理函数
			{
				alert(e);
			}
		}); 
}
</script>
<body>
	<%
		if(imgSrcs.size() != 0){
	%>
			<table align="center">
	<%
		int i = 0;
		for(Object o:imgSrcs){
			i++;
			if(i==1){
				
	%>
				<tr>
					<td>
					<input type="radio" id="r_<%=i %>" name="radio" checked="checked" value="<%=o %>"/>
					</td>
					<td>
						<img src="<%=o %>" id="src_<%=i %>" style="width: 100px;height: 80px;" />
					</td>
				</tr>
	<%
			}else{
	%>
				<tr>
					<td>
					<input type="radio" id="r_<%=i %>" name="radio" value="<%=o %>"/>
					</td>
					<td>
						<img src="<%=o %>" id="src_<%=i %>" style="width: 100px;height: 80px;" />
					</td>
				</tr>
	<%
			}
		}
	%>
	</table>
	<center><button onclick="Recommend(2);">确定</button></center>
	
	<%
		}else{
	%>
		<div id="picFile" style="margin: 0 auto;" align="center">
			<input type="file" id="pic_file" name="pic_file"/>
			<br>
			<button onclick="uploadPic();">确定</button>
		</div>
	<%
		}
	%>
	
	<div id="uploadPic" style="display: none;">
		<table align="center">
				<tr>
					<td>
					<input type="radio" id="r_u" name="radio1" checked="checked"/>
					</td>
					<td>
						<img src="" id="pic_view"  style="width: 100px;height: 80px;" />
					</td>
				</tr>
		</table>
		<center><button onclick="Recommend(1);">确定</button></center>
	</div>
</body>
</html>
<pre name="code" class="java">需要注意的是:在使用ajaxFileUpload基于servlet上传时需要设置response.setContentType("text/html");尽管dataType: 'json'设置为json仍要设置response.setContentType("text/html");否则获取不到服务器端返回的数据以及会弹出一个对话框
这点与基于struts2的ajaxFileUpload上传是不一样的,可以参考之前写的http://www.blogjava.net/sxyx2008/archive/2010/11/02/336826.html



PD详解 扩展消息——Source_Capabilities_Extended Message PD的协议层分为控制消息,数据消息还有扩展消息,今天大师匈讲一下扩展消息中的source_cap_extended。这个消息在扩展消息中算是比较关键的东西。 扩展消息中的source_cap_extended 大师匈先上图,然后逐一解释; 上面的图表说了source_cap_ext中包含了哪些内容。 我们注意到在source_cap扩展消息中是以字节为单位的,并不是像source_cap中以一个object为单位,当然有注意到PD标准spec中说明的扩展消息的话,那里有说明,在header之后的字节 阅读详情

相关推荐

iTunes登录协议逆向与自动化实现

本文详细解析了iTunes登录协议的逆向工程与自动化实现方法,涵盖请求体构造、签名生成和会话管理等关键技术。通过XML结构解析、X-Apple-ActionSignature生成原理及完整登录流程实现,帮助开发者高效完成iTunes自动化登录,提升工作效率。

weixin_26938645的博客 939

JSP 异步上传文件

通过iframe来实现无刷新的的文件上传,其实是有刷新的,只是在iframe里面隐藏了而已   简单的原理说明:   附件:     form里面的target要与iframe里面的name的值相等,指示是form相应了post事件,也就是post时间相应的时候刷新的是iframe而不是整个页面。   下面我举个例子: 1、编写一个JSP页面 <%@ page la

黄彪博客 1198

PINN——加入物理约束的神经网络

【摘要】 基于物理信息的神经网络(Physics-informed Neural Network, 简称PINN),是一类用于解决有监督学习任务的神经网络,它不仅能够像传统神经网络一样学习到训练数据样本的分布规律,而且能够学习到数学方程描述的物理定律。与纯数据驱动的神经网络学习相比,PINN在训练过程中施加了物理信息约束,因而能用更少的数据样本学习到更具泛化能力的模型。本文主要解析这种神经网络以...

qq_39444290的博客 4582

通过ajaxFileUpload异步请求上传文件(ajaxFileUpload+servlet实现文件上传下载)

1、最终效果 实现选择图片(此处以图片为例,支持所有类型文件的上传),选择之后将选择的图片在页面中显示出来,点击上传,可以将文件上传到指定的地址中,上传成功后在当前页面自动显示下载标签。 源码下载地址:链接:https://pan.baidu.com/s/17G63S9rkfFIfGBqwCwUHaA 提取码:52b7 2、技术结构 eclipse+servlet+ajaxFileUpload+windows 3、将文件上传下载依赖的包及js文...

雾林小妖的博客 2709

Mask2Former实战:用SwinTransformer+Deformable Attention搞定图像分割三大任务

本文实战解析了Mask2Former模型如何统一解决语义、实例和全景分割三大任务。通过集成Swin Transformer骨干网络与创新的Deformable Attention及Masked Attention机制,详细介绍了模型构建、训练策略及在COCO数据集上的性能表现,为开发者提供了高效的图像分割解决方案。

tech5的博客 246

避坑指南:STM32CubeMX配置USB虚拟串口时Heap Size设置的那些坑

本文深入剖析了使用STM32CubeMX配置USB虚拟串口时,因Heap Size设置不当导致设备无法识别的常见问题。文章从故障现象出发,详细解释了堆内存不足如何影响USB枚举过程,并提供了从内存布局分析、动态监控到系统化调试的完整解决方案,帮助开发者从根本上避免这一配置陷阱。

ttt77的博客 599

文件上传(一)文件同步和异步上传

一、准备工作: 先在maven下搭建一个ssh框架: 1、依赖包pom.xml: &lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/...

w_t_y_y的博客 1782

空心杯电机在美容仪器中的应用:为什么你的洗脸刷动力这么强?

本文深入解析了空心杯电机如何成为高端美容仪器的核心动力源。通过对比传统电机,揭示了其无铁芯、低惯量、零齿槽效应的技术优势,从而实现了强劲动力、极致静音与细腻震动的用户体验。文章详细阐述了空心杯电机在洁面刷、导入仪等美容仪器中的具体应用与选型考量,并指出了开发中驱动匹配、测试等关键实战要点。

j2k3l4的博客 1013

ajax 验证文件大小,ajaxFileUpload上传带参数文件及JS验证文件大小(示例代码)

本代码片段用于spring boot+hibernate,用maven构建一:ajaxFileUpload为了实现无刷新异步提交文件,构建 iframe 然后创建form表单 再将要上传的文件写上去再提交.但是原代码 却没有处理data.所以这块内容需要我们自己加上去.下面红色部分为修改ajaxFileUpload.js的三处地方:(对比源码修改)1.createUploadForm: funct...

weixin_42183453的博客 663

Cadence ADE实战:1GHz VCO相位噪声仿真全流程(附PSS/Pnoise避坑指南)

本文详细介绍了在Cadence ADE环境中对1GHz VCO进行相位噪声仿真的完整流程。重点剖析了PSS(周期性稳态分析)和Pnoise(周期性噪声分析)两大核心引擎的关键参数设置与避坑指南,帮助射频与模拟IC设计者准确评估VCO性能,解决仿真不收敛、结果异常等常见问题。

rock5的博客 669

【深圳】IBM V3500存储维修 更换控制器故障

今天给大家分享的是深圳.福田区一个电商客户公司一台IBM Storwize v3500存储控制器故障从远程诊断 收集日志 分析结果的实际案例,如图所示通过存储管理口登陆进去后直接看到少了一个控制器,经过工程师分析日志后判定为该控制器损坏,接下来更换控制器配件,标准套件的控制器不带子卡和电池,所以需要把故障控制器上的子卡和电池拆下来装到新控制器上,这个电池拆还需要点技巧,接着把新的控制器插回V3500主机,等待大约十分钟后,新控制器指示灯全绿,管理界面看到节点已联机;冠峰科技-爱科技爱分享。

OuYangYuXi的博客 4576

ajax异步文件上传,servlet处理,含demo

ajax上传组件源自于http://www.phpletter.com/Demo/AjaxFileUpload-Demo/,用的jquery 不过它服务器端用的是php,原理都是一样的,我改成了java版的 本文最下方有完整demo下载   用到两个jar包 commons-io-xx.jar commons-fileupload-xx.jar xx代表版本号   新建一个普通的

axe的专栏 3万+

基于STM32的智能手环心率血氧体温监测系统(完整设计)

本文设计了一款基于STM32单片机的多功能智能手环系统,集成心率、血氧、体温实时监测功能,并支持运动数据管理与健康预警。系统采用MAX30102传感器实现心率血氧监测,DS18B20检测体温,ADXL345进行步数统计,通过OLED屏幕显示数据。研究通过低功耗硬件选型与模块化软件架构设计,实现了多参数同步采集、阈值预警及蓝牙数据传输功能。测试结果表明,系统在健康监测精度、续航能力及用户交互体验上均达到预期目标,为个人健康管理提供了实用解决方案。

3254968421的博客 701

Java上传图片servlet和ajaxFileUpload上传和过滤器

1、需要ajaxFileUpload.js包 2、下载地址: commons-fileupload-1.3.2.jar commons-io-2.5.jar 这两个jar可以去菜鸟教程下载 https://www.runoob.com/jsp/jsp-file-uploading.html ajaxFileUpload.js:http://files.cnblogs.com/files/kiss...

weixin_44594257的博客 683

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Servlet异步上传文件

这里需要用到插件ajaxfileupload.js,jar包:commons-fileupload-1.3.2.jar,commons-io-2.5.jar 注意红色部分的字!!!! 1、创建一个web工程,在配置web.xml <!-- 文件上传的servlet --> <servlet> <servlet-na...

163

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

一个按钮实现文件的异步上传

要想实现文件的上传功能,最基础的就是在jsp中使用form提交的方式实现,但这种方式会在页 面中呈现两个按钮,并且自带的按钮比较丑。 最近在做项目的过程中,实现了用一个按钮实现文件异步上传的功能。其中异步上传的JS和Servlet采用的是”zouminglan“的博客中的代码,见:https://www.cnblogs.com/zml-java/p/6255311.html。 这里需要用到插件...

Ritajiaojiao的博客 2100

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

AjaxFileUpload实现文件上传

Ajax实现文件上传需要两个jar包:commons-fileupload-1.3.1.jar,commons-io-2.4.jar 和两个js文件ajaxfileupload.js,jquery.js 实例:     ajaxFileUpload.jsp           function ajaxFileUpload() {           $.ajaxFileUplo

张普的专栏 957

Struts2 + ajaxFileUpload 异步上传文件

ajaxFileUpload下载地址http://www.phpletter.com/Our-Projects/AjaxFileUpload/ jsp MyWebProject function ajaxFileUpload() { $.ajaxFileUpload({ url : "${pageContext.request.contex

路虽远行则将至,事虽难做则必成 742

jsp-jquery-ajaxfileupload插件-异步上传

  1. 简单的请求页面:index.jsp   &lt;%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%&gt; &lt;% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+r...

juan308920588的专栏 149

AJAX+Servlet3.0实现异步文件上传(单个文件、多个文件上传、带文件的表单提交)

   一、上传单个文件           1.JSP页面代码       &lt;%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%&gt; &lt;!DOCTYPE html&gt; &lt;html lang="zh-cn"&gt; &lt

qq_40348465的博客 1626

SmartUpload.jar和ajaxfileupload.js异步上传文件

(1)首先需要SmartUpload.jar文件,然后需要jQuery.js和ajaxfileupload.js (2)创建一个Java web项目,依次导入对应的文件到相应的目录 (3)编写测试代码 ajaxUpload.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> &l...

weixin_30357231的博客 371

web上传的简单实现

需要jquery.js 和 ajaxfileupload.js ajaxUpload.jsp: Insert title here <!-- function form1Submit(){ alert(1); return false; } func

AFer198215的专栏 935

ajax图片上传及时回显,jsp+ajax+springMvc图片上传立刻回显 电商

思路:onchange()事件触发异步请求,js将成功后返回图片的地址动态写入JSP页面: 外层一个ID为myForm的表单 *上传产品图片(XX尺寸):注:该尺寸图片必须为90x150。请上传图片的大小不超过3MBJS函数function submitImgSize1Upload() {var option = {url:"${path}/upload/upload.do",//使用ajax...

weixin_28475533的博客 253

Ajax异步上传在SSM框架中的应用

最近在做毕业设计,由于毕设中要实现图片上传和视频上传的功能。突然发现原来的Form表单中的file已经满足不了我了,于是在一番折腾之后终于让我找到了一个简便的上传方式。下面来和大家分享一下我的过程。 第1步:首先你需要一个ajax的上传文件的脚本,就是这个脚本,在github上找到的,非常好用,云盘链接下载。下载完成后将它加进你的项目中。 链接:https://pan.baidu.com/s/1

lianjs 3834

【JAVA】Web中文件的上传与下载

Web中文件的上传与下载

喜欢你,像风走了八千里 不问归期 566

JSP:JSP属性,异步处理,文件上传,非阻塞IO,WebSocket

与开发Servlet一样,Servlet并不需要处理底层开发、网络通信等通用的底层细节——因为Servlet处于Web服务器中运行,Web服务器为Servlet处理了底层的开发、网络通信等;如果Servlet作为控制器调用了一个耗时的业务方法,那么Servlet必须等待到业务方法完全返回之后才会生成响应,这将使得Servlet对业务方法的调用变成一种阻塞式的调用,因此效率比较低。表单的enctype属性指定的是表单数据的编码方式。3,Servlet的异步处理。...

燕双嘤 776
上一篇: Got error 28 from storage engine 点击数据表 提示
下一篇: js 提交form表单 和 设置form 表单请求路径
OnePiece_Sky
博客等级 码龄15年 9粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值