ajaxfileupload.js上传文件

使用ajaxfileupload.js上传文件 首先就是引入js和ajaxfileupload的文件,这个不需要多说。   然后就是ajax请求后台地址。代码如下: <div class="btn-file-box pos-rel"> <input type="file" id="upload" name="upload" style="font-size: 0;opacity: 0;width: 100... 阅读详情

我在原有springmvc的web项目上新建jsp页面:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>文件上传</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	<script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery-1.8.3.js"></script>
	<script type="text/javascript" src="<%=request.getContextPath() %>/js/ajaxfileupload.js"></script>
	<script type="text/javascript">
	function upload(){
		$.ajaxFileUpload({
	        url:'uploadfile.do',
	        secureuri:false,	//是否启用安全提交,一般设置为false
	        fileElementId:'uploadfile',		//文件上传空间的id属性  <input type="file" id="uploadfile" name="uploadfile" />
	        dataType: 'json',	//返回值类型 一般设置为json
	        success:function(data,status){  //服务器成功响应处理函数
	        	data = data.replace("<pre>","").replace("</pre>","");
	        	data = eval('('+data+')');
	           	if(data.flag=='success'){ //从服务器返回的json中取出message中的数据
	        	  	alert("上传成功。");
	        	  	$('#filepath').val(data.faceimagepath);
					$('#fileimage').attr("src","${pageContext.request.contextPath}/upload/userface/"+data.faceimagepath);
	           	}else if(data.flag=='typeerror'){
	        	   	alert("图片类型错误,上传失败。");
	           	}else{
	           		alert("未知错误,上传失败!");
	           	}
	        },
	        error: function (data, status, e){	//服务器响应失败处理函数
	            alert("服务器无法连接");
	        }
	    })
	}
	</script>
  </head>
  
  <body>
    <input id="uploadfile" name="uploadfile" type="file">
    <input type="button" value="上传" onclick="upload()">
    <input id="filepath" name="filepath" type="text">
    <div style="background:#fff;border:2px solid #99BBE8;padding: 0px;overflow:hidden;width: 220px;height: 220px;">
    	<img id="fileimage" alt="" src="">
    </div>
  </body>
</html>

引入jquery.1.8.3.js、ajaxfileupload.js文件。在这里路径要引用正确了,我在这却遇到了一个小问题,选择文件后点击上传页面却没有响应,根据以往的了解路径一定是没有错的,但在火狐浏览器firebug却报错提示$ is not defined.最后发现原来是项目中配置的过滤器的原因,于是我在web.xml文件中添加:

<!-- 过滤器配置 -->
	<filter>
		<filter-name>LoginFilter</filter-name>
		<filter-class>com.springtest.common.filter.LoginFilter</filter-class>
		<init-param>
			<param-name>notFilterDir</param-name>
			<param-value>
			/login.do,/userlogin.do,/fileupload.jsp,/uploadfile.do,/js/
			</param-value>
		</init-param>
	</filter>
	<!-- Filter映射 -->
	<filter-mapping>
		<filter-name>LoginFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

将js文件夹过滤出来,这样我在uploadfile.do就可以请求到了。

//上传文件
	@RequestMapping(value = "/uploadfile.do", method = RequestMethod.POST)
	public void uploadUserFace(PrintWriter out, HttpServletRequest request,HttpSession session) {
		try {
			String filefolderpath = session.getServletContext().getRealPath("");
			filefolderpath += File.separator + "upload" + File.separator+ "userface" + File.separator;
			DiskFileItemFactory fac = new DiskFileItemFactory();
			ServletFileUpload upload = new ServletFileUpload(fac);
			upload.setHeaderEncoding("UTF-8");
			List fileList = upload.parseRequest(request);
			Iterator it = fileList.iterator();
			String name = null;
			String preName = null;
			String extName = null;
			String filename = null;
			while (it.hasNext()) {
				FileItem item = (FileItem) it.next();
				if (!item.isFormField()) {
					name = item.getName();
					long size = item.getSize();
					String type = item.getContentType();
					if (name == null || name.trim().equals("")) {
						continue;
					}
					// 文件名:
					if (name.lastIndexOf(".") >= 0) {
						preName = name.substring(0, name.lastIndexOf("."));
					}
					// 扩展名格式:
					if (name.lastIndexOf(".") >= 0) {
						extName = name.substring(name.lastIndexOf(".")).toLowerCase();
					}
					if (extName.equals(".bmp") ||extName.equals(".gif") ||extName.equals(".jpg") || extName.equals(".jpeg")) {// 是Image
						filename =DateUtil.formatDate(new Date(),"yyyyMMddHHmmssSSS");
						File saveFile = new File(filefolderpath + filename+ extName);
						item.write(saveFile);
						out.print("{\"flag\":\"success\",\"faceimagepath\":\""+ filename + extName + "\"}");
					} else {
						out.print("{\"flag\":\"typeerror\"}");
					}
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
			out.print("{\"flag\":\"error\"}");
		} finally {
			out.flush();
			out.close();
		}
	}

如果项目中没有upload/userface文件夹:会提示系统找不到文件路径。
这里写图片描述

手动在项目中建两个upload/userface文件夹,图片上传成功。但是jsp页面$.ajaxFileUpload()success回调却没有响应。

在我这个环境中,out.print()返回的字符串在jsp页面却没有获取成功。firebug报错提示:
这里写图片描述
在ajaxfileupload.js文件中,我也不知道是怎么回事,这个问题先留在这。

我用的服务器是jboss7.x,这个版本的服务器有个特点,每次修改文件后ctrl+s好像都会重新部署,console会打印出:

23:40:36,514 INFO  [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/springtest]] (MSC service thread 1-7) Destroying Spring FrameworkServlet 'DispatcherServlet'
23:40:36,666 INFO  [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/springtest]] (MSC service thread 1-7) Closing Spring root WebApplicationContext
23:40:36,917 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-1) Stopped deployment springtest.war in 405ms
23:40:36,918 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-5) Starting deployment of "springtest.war"

相比起来我还是更喜欢jboss4.x。可能是7.x的版本需要在哪修改下配置,这个问题也先留着。

总的来说,这个上传文件的示例可以成功上传文件,但有待完善。

使用jQuery插件实现文件上传的ajaxfileupload.js 接下来,脚本会进行一系列的检查,包括检查文件是否为真实的图像文件、文件是否已经存在、文件大小是否超过限制,以及文件格式是否符合要求。在表单中,我们为文件选择输入框指定了一个名称(fileToUpload),以便在后台处理文件上传时能够获取到该文件。在成功回调函数中,我们根据后台返回的数据判断文件上传是否成功,并在页面上显示相应的信息。接下来,我们可以创建一个文件上传的HTML表单,并添加一个文件选择输入框和一个上传按钮。在上述代码中,首先我们获取了文件选择输入框中的文件对象,并使用。 阅读详情

相关推荐

LWIP协议栈在STM32H7上的内存优化实战:如何用32KB RAM实现稳定千兆以太网通信

本文深入探讨了在STM32H7微控制器上,如何通过内存优化策略,在仅32KB的D2 SRAM中稳定运行LWIP协议栈以实现千兆以太网通信。文章详细分析了STM32H7的内存架构、LWIP的内存消耗瓶颈,并提供了从描述符表与PBUF池精确分配、链接脚本修改到MPU区域划分的一整套实战优化方案,旨在解决大数据量传输卡死等常见配置问题。

gg901的博客 604

通用ajaxfileupload.js

经常用到,网上又各种各样的,品质参差不齐,有些可能不好用,又读不太懂,给自己留一个常用的: ajaxfileupload.js jQuery.extend({ createUploadIframe : function(id, uri) { //create frame var frameId = 'jUploadFrame' + id; if (window.ActiveXO...

鱼儿眼中的海 551

使用python对创芯科技CANalyst-II分析仪进行二次开发(详细教程)

使用python对创芯科技CANalyst-II分析仪进行二次开发

ningqingzy的博客 1万+

ajaxfileupload带参数上传文件

$.ajaxFileUpload( { url: '/controller/action', secureuri: false, data: { 'name': 'Tom', //'参数名称':'参数值' }, ... ... }

代码笔记 1556

PYNQ-Z2 开发板从镜像烧录到 Jupyter 交互全流程指南

本文详细介绍了PYNQ-Z2开发板从镜像烧录到Jupyter交互的全流程指南,包括硬件解析、镜像烧录技巧、设备启动与网络配置、Jupyter Notebook深度使用以及实战案例分享。通过具体步骤和实用技巧,帮助开发者快速上手PYNQ-Z2开发板,实现高效的FPGA开发和智能家居控制应用。

weixin_28736355的博客 440

反射机制——通过反射调用service中方法

需求:现在有一群service接口,有同一个方法名称,内部逻辑除了调用不同的调用自身的方法外其他基本都一致,那现在就需要一个独立的方法来勾勒出这个方法 1.SpringContextUtil package com.XXX.report.util; import org.apache.log4j.Logger; import org.springframework.beans.BeansE...

东天里的冬天 8521

ajaxfileupload.js目前功能最全版本(多文件、异常处理等),顺便解决只能上传一次的BUG(非live绑定)

前言之前项目中要进行文件的ajax上传时习惯性的用ajaxfileupload.js这个插件,当时遇到一个问题,使用on绑定change事件后,上传一次后,再次上传时就不再激发change事件了,当时项目紧,为了省事,直接用live绑定change事件搞定。最近项目中使用bootstrap-fileinput.js v3.1.3(http://www.jasny.net/bootstrap/java

lhtzbj12的专栏 1万+

VUE3 实战手记(一)集成 EasyUI for Vue 组件库

本文详细介绍了如何在VUE3项目中集成EasyUI for Vue组件库,包括环境准备、基础安装、配置与集成、TypeScript类型问题解决以及组件实战等内容。EasyUI以其轻量级和开箱即用的特性,特别适合快速开发后台管理系统,提升开发效率。

weixin_30628801的博客 530

jQuery.AjaxFileUpload.js:简单易用的文件上传插件

jQuery.AjaxFileUpload.js:简单易用的文件上传插件 如果你正在寻找一个简单、灵活且易于使用的文件上传解决方案,那么jQuery.AjaxFileUpload.js绝对是一个值得尝试的选择。 什么是jQuery.AjaxFileUpload.js? 是一款基于jQuery库的轻量级文件上传插件。它允许你在网页中实现异步文件上传功能,无需刷新页面即可完成文件上传操作。 jQue...

gitblog_00087的博客 986

SAP Integration Suite 与 SAP Cloud Integration 的关系解析

SAP Cloud Integration是SAP Integration Suite套件的核心组件,专注于消息与流程集成。两者关系可概括为:Integration Suite是SAP BTP上的集成平台套件(iPaaS),而Cloud Integration是其中负责应用与B2B集成的关键能力。日常所说的"CPI"实际指代的是Integration Suite中的Cloud Integration功能。该套件还包含API管理、事件网格等其他集成能力,共同构成企业集成解决方案。理解这一层

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 594

snmp MIB详解

每个 MIB 对象都由一个对象标识符(OID)和对象类型组成。OID 是一个由多个数字组成的路径(类似于 IP 地址),它标识了 MIB 中对象的层次结构。

dlz0836的博客 3721

ajaxfileupload文件上传返回值处理 ajaxfileupload.js + spring mvc文件上传

ajaxfileupload.js组件的确好用,但是那个发挥zhi

bling 5249

AMBA-CHI协议详解(十)

该规范提供了一个Request Retry(请求重试)机制,确保当请求到达一个Completer 时,它要么被接受,要么被给予一个RetryAck响应,以防止阻塞REQ通道。

Crazzy_M的博客 986

php ajaxfileupload.js 使用,JavaScript_jQuery插件ajaxfileupload.js实现上传文件,AjaxUpLoad.js的使用实现无刷新文 - phpStud...

jQuery插件ajaxfileupload.js实现上传文件AjaxUpLoad.js的使用实现无刷新文件上传,如图1、创建页面并编写HTML上传文档:上传图片: 2、引用AjaxUpload.js文件3、编写JS脚本window.onload = function() {init(); //初始化}//初始化function init() {//初始化文档上传var btnFile = d...

weixin_39666782的博客 266

Statistics and Machine Learning Toolbox

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

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

ajaxfileupload.js异步上传文件插件(完整demo)

ajaxfileupload.js异步上传文件插件HTML:<input type="file" accept="image/gif,image/jpeg,image/jpg,image/png,image/svg" name="photo" class="file" id="fileField" size="28" value="业务员ID"> <input type="button" value

猫老板的豆 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

ajaxfileupload.js+springMVC实现无刷新文件上传

js部分用ajaxfileupload.js的方法ajaxfileupload.js是依赖jquery的,所以要引入jquery。 js代码: function upload(){ var fileName = $(this).val(); $.ajaxFileUpload({ url:rootPath+"/member/upload", secureuri:false,

mnm__的专栏 2679

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上传文件中使用ajaxfileupload.js碰到的问题

在做上传图片时需要用到异步上传值服务器,当时选用了ajax的ajaxfileupload可以上传。 这里写下踩过的坑 1:使用.ajaxFileUpload();函数,网页报错,提示没有这个函数。解决:导入ajaxfileupload.js文件。简单2:上传成功了没有执行回调,即.ajaxFileUpload({});函数,网页报错,提示没有这个函数。 解决:导入ajaxfileup

hmy_362322的博客 4524

ajaxFileUpload.js 实现异步文件上传

使用iquery的插件ajaxFileUpload.js实现文件的异步上传。后台为java实现。

因为懂得的博客 3079

php ajaxfileupload.js 使用,ajaxfileupload.js实现文件上传(附步骤代码)

这次给大家带来ajaxfileupload.js实现文件上传(附步骤代码),ajaxfileupload.js实现文件上传的注意事项有哪些,下面就是实战案例,一起来看一下。AjaxUpLoad.js的使用实现无刷新文件上传,如图1、创建页面并编写HTML上传文档:上传图片: 2、引用AjaxUpload.js文件3、编写JS脚本window.onload = function() {init()...

weixin_33245447的博客 509

js ajax上传file文件上传,使用ajaxfileupload.js实现上传文件功能

使用ajaxfileupload.js实现上传文件功能2019-01-01编程之家https://www.jb51.cc编程之家收集整理的这篇文章主要介绍了使用ajaxfileupload.js实现上传文件功能,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。一直以来上传文件都是使用form表单上传文件,也看到过有人使用js上传文件,不过看起来蛮简单的也就没有怎么去理会。今天突然要使用...

weixin_42112894的博客 2079

JQuery ajaxFileUpload.js上传文件的使用问题

使用在框架使用jq的情况下,使用ajaxFileUpload上传文件是一个不错的选择,ajaxFileUpload支持异步上传,采用的是隐藏的表单提交,避免了直接使用表单提交文件带来的问题,由于ajaxFileUpload依赖的jq版本较老,在jq_1.2.x之前了,所以用高版本的jq会报错,网上改写了ajaxFileUpload部分代码,以适配高低版本的jq,而且支持data来传另外的参数(之前...

lucky_ly的博客 1276

ajaxfileupload.js的文件上传附带传参

今天公司项目需要用到文件上传,所以就用了ajaxfileupload.js,但是有个需求是既要上传文件又要传递几个参数,所以卡了几个小时,网上查询资料后,随笔小记一下! ajaxfileupload.js原版的是不支持参数传递的,也就是没有普通的ajax的data属性,所以我们需要更改ajaxfileupload.js的一点源代码。顺便提醒一下,如果Ctrl+s保存不了,要么是快捷键冲突,要么是a...

qq_42574855的博客 550

php jquery之ajax上传文件 ajaxfileupload.js

在用PHP上传文件时我们只能用$_FILES数组,如果我们只是单一的用JS方式取其ID,如..document.getElementById('img').value或者jquery形式的$("#img")都是不能正真实际上传的。 可是功能上又要要求实现所谓的“异步上传”,

鹏鹏博客 3051

SpringMVC结合ajaxfileupload.js实现异步上传文件

相比较提交表单实现文件上传,使用ajaxfileupload.js显得更加灵活 jsp代码:     //获取文件名称       function change(){         var filePath= $("#file").val();         if(filePath&&filePath!=""){         filePath=filePath.su

biaozhun90的博客 1056

SSH使用ajaxfileupload.js上传文件

功能概述:实现了利用ajaxfileupload.js上传文件 jsp: &lt;body&gt; &lt;div align="center"&gt; &lt;label for="upload"&gt;上传图片:&lt;/label&gt; &lt;input type="file" name="upload" id="upl

六月星海的博客 646

使用ajaxfileupload.js插件实现Ajax方式上传文件

[原]使用ajaxfileupload.js插件实现Ajax方式上传文件 linuxing , 17:52 , 编程 » JavaScript , 评论(3) , 引用(0) , 阅读(16636) , Via 本站原创 大 | 中 | 小 引用地址: 注意: 该地址仅在今日23:59:59之前有效     无论是PHP,还是其他的服务端脚本

zxf216216的专栏 1097
上一篇: springmvc项目启动报错:'sessionFactory' or 'hibernateTemplate' is required
下一篇: Caused by: java.sql.SQLException: Connections could not be acquired from the underlying database!
李帅康
博客等级 码龄11年 30粉丝 141原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值