Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >JavaWEB+Ajax实现文件上传

JavaWEB+Ajax实现文件上传

作者头像
SmileNicky
发布于 2019-01-17 06:59:03
发布于 2019-01-17 06:59:03
2.6K00
代码可运行
举报
文章被收录于专栏:Nicky's blogNicky's blog
运行总次数:0
代码可运行

准备:我们需要找一张绿色或者其它颜色的背景图,放在photo文件夹里就好哈,然后加jar:common-io和commo-fileupload就可以哈

创建progress.css文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.pro{

  height:15px;

  width:500px;

  background: #FFFFF0;

  border: 1px solid #8FBC8F;

  margin: 0;

  padding: 0;

  display:none;

  position: relative;

  left:25px;

  float:left;

}

创建uploadAjax.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function go(){
 f1.submit();
 document.getElementById("pro").style.display="block";
 document.getElementById("prop").style.display="";
 timer=setInterval("getP()",50);
  
}
 
var xmlHttpRequest;
function getP(){
  
 if(window.XmlHttpRequest){
  xmlHttpRequest=new XmlHttpRequest();
 }else{
  xmlHttpRequest=new ActiveXObject("Microsoft.XMLHTTP");
 } 
  
 xmlHttpRequest.onreadystatechange=callBack; 
 url="GetProgressServlet";
 xmlHttpRequest.open("post",url,true);
  
 xmlHttpRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");
 xmlHttpRequest.send("&timeStamp="+(new Date()).getTime()); 
  
}
//回调函数
function callBack(){
  
 if(xmlHttpRequest.readyState==4 && xmlHttpRequest.status==200){ 
   
  result=xmlHttpRequest.responseText;
  var result=result.replace(/(^\s*)|(\s*$)/g, "");
  var res=result.split(",");
  var flag=res[1]; 
  var per=parseInt(res[0]);
  var err=res[2];
  document.getElementById("imgpro").style.width=per*5+"px";
  document.getElementById("prop").innerHTML=per+"%";
  if(flag=="OK"){
   window.clearInterval(timer);
   alert("上传成功!");
   document.getElementById("pro").style.display="none";
   document.getElementById("prop").innerHTML="";
   f1.reset();
  }
  if(err!=""||err.length>0){
   window.clearInterval(timer);
   alert(err);
  }
  if(flag==null){
   window.clearInterval(timer);
  }
 }
}

调用和引入

<link rel="stylesheet" type="text/css" href="css/progress.css"> <script type="text/javascript" src="js/uploadAjax.js" charset="UTF-8"></script>

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="am-g">
      <div class="am-u-sm-12" align="left">
    	<div class="am-form-group">
		<form action="<%=basePath %>UploadSpotImgServlet" name="f1" id="f1" method="post" enctype="multipart/form-data" target="if">
	 		<div class="field">
                <a class="button input-file" href="javascript:void(0);">+ 浏览文件<input size="30" type="file" name="logo" data-validate="required:请选择上传文件,regexp#.+.(jpg|jpeg|png|gif)$:只能上传jpg|gif|png格式文件" /></a>
             </div>
             <br>
             <input type="reset" name="res1" value="重置"  class="am-btn am-btn-primary" />
             <input type="submit" name="but1" value="提交" onclick="go();" class="am-btn am-btn-primary" />
		</form><br>
		<div id="pro" class="pro" align="left" style="height:1px;width:600px;">
 		<img alt="" src="photo/progress.png" width="0px" id="imgpro">
		</div>
  		<span id="prop" style="width:15px;height:15px;display: none;">0%</span>
  		<br><br>
		<iframe id="if" name="if" src="" style="display: none"></iframe>
		
		
	   </div>
     </div>
   </div>

创建UploadSpotImgServlet

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class UploadSpotImgServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private String fileName;
	
	private File tempFile;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//设置编码格式为utf-8
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out1 = response.getWriter();
		
		request.setCharacterEncoding("UTF-8");
		//获取session,保存进度和上传结果,上传结果初始值为NOK,当为Ok表示上传完成
		HttpSession session=request.getSession();
		session.setAttribute("prog", "0");
		session.setAttribute("result", "NOK"); 
		session.setAttribute("error", "");
		String error="";
		//给上传的文件设一个最大值,这里是不得超过50MB
		int maxSize=50*1024*1024;
		//创建工厂对象和文件上传对象
		DiskFileItemFactory factory=new DiskFileItemFactory();
		ServletFileUpload upload=new ServletFileUpload(factory);
		try {
			//解析上传请求
			List items=upload.parseRequest(request);
			Iterator itr=items.iterator();
    
		   while(itr.hasNext()){
			    FileItem item=(FileItem)itr.next();
			    //判断是否为文件域
			    if(!item.isFormField()){
			     if(item.getName()!=null&&!item.getName().equals("")){
				      //获取上传文件大小和文件名称
				      long upFileSize=item.getSize();   
				      fileName=item.getName();
				      if(upFileSize>maxSize){
				       error="您上传的文件太大了,请选择不超过50MB的文件!";
				       break;
				      }
				      //此时文件暂存在服务器的内存中,构造临时对象
				      tempFile=new File(fileName);
				      //指定文件上传服务器的目录及文件名称
				      File file=new File("D:\\MyEclipse\\workspace\\TourismSystemServer\\WebRoot\\source\\images",tempFile.getName());
				      //构造输入流读文件
				      InputStream is=item.getInputStream();
				      int length=0;
				      byte[] by=new byte[1024];
				      double persent=0;
				      FileOutputStream fos=new FileOutputStream(file);
				      PrintWriter out=response.getWriter();
				      while((length=is.read(by))!=-1){
				       //计算文件进度
				       persent+=length/(double)upFileSize*100D;
				       fos.write(by, 0, length);
				       session.setAttribute("prog", Math.round(persent)+""); 
				       Thread.sleep(10);
				      }
				      fos.close();
				      Thread.sleep(1000);
			     	}else{
			     		error="没选择上传文件!";
			     	}
			    }
		   }
		   
		  Constant.ImgPath.path = "/source/images/"+tempFile.getName();
		  //System.out.println(Constant.ImgPath.path);
		   response.sendRedirect(Constant.WEB_URL_ADDSPOTINFO);
		   
		} catch (Exception e) {
			e.printStackTrace();
			error="上传文件出现错误:"+e.getMessage();
		}
		if(!error.equals("")){ 
			session.setAttribute("error", error);
		}else{
			session.setAttribute("result", "OK");
		}
		
		out1.flush();
		out1.close();
	}
 
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
	
}

ok,这样我们就可以上传文件到我们制定的文件夹里哦,还有结合Ajax,就不会出现页面刷新的情况了哦!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年04月10日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
文件上传---动作条
  利用Apache commons fileupload上传文件,直接显示其完成的进度条。----示例代码源自《JAVA WEB王者归来》   1 首先要显示动作条要利用Ajax的异步请求,使得在没有完成时,不会刷新本页,而是局部的刷新。如果没有指定form的定向页面,默认是刷新本页,正常我们提交一个form刷新本页,在没有完成请求前是显示空白的网页,这里我们指定他刷新一个不显示的区域,就要用到form的属性target。 <iframe name=uploadiframe width=0 height=
用户1154259
2018/01/18
1K0
文件上传---动作条
Java Web 文件上传
 在我们的web开发中,很多的时候都需要把本机的一些文件上传到web服务器上面去
Hongten
2018/09/13
2.1K0
C#结合JavaScript实现多文件上传
在许多应用场景里,多文件上传是一项比较实用的功能。实际应用中,多文件上传可以考虑如下需求:
初九之潜龙勿用
2024/06/20
1520
C#结合JavaScript实现多文件上传
WEB:文件上传 —— 看这篇就够了
HTML 表单最初只支持 application/x-www-form-urlencoded 形式编码(key=value&key=value...),但它不适合用于传输二进制数据(文件)或者包含非ASCII字符的数据。所以 multipart/form-data 就诞生了,专门用于传输文件。
WEBJ2EE
2019/07/30
6.8K0
WEB:文件上传 —— 看这篇就够了
springmvc + h5(进度条)文件上传
版权声明:本文为博主原创文章,未经博主允许不得转载。 1.先上效果图 1.1弹出附件框 1.2选择文件,点击上传(这里做了一个简单的校验) 1.3点击上传 1.4上传成功 刷新列表 2
DencyCheng
2018/11/05
2.8K1
springMVC是实现前台带进度条文件上传
项目框架采用spring+hibernate+springMVC如果上传文件不想使用flash那么你可以采用html5;截图前段模块是bootstarp框架;不废话直接来代码;spring-mvc配置文件;效果截图如下:
用户6625441
2020/03/13
1.7K0
调用DeepSeek API增强版纯前端实现方案,支持文件上传和内容解析功能
在现代Web开发中,文件上传和内容解析是常见的需求。随着人工智能技术的发展,DeepSeek API增强版提供了一个强大的解决方案,支持多种文件格式的上传和内容解析。本文将详细介绍如何通过纯前端技术调用DeepSeek API增强版,实现文件上传和内容解析功能,帮助开发者快速构建高效、安全的Web应用。
全干程序员demo
2025/03/27
8550
调用DeepSeek API增强版纯前端实现方案,支持文件上传和内容解析功能
轻松实现多图片上传:选择文件夹与拖拽上传区域全攻略
选择多个文件 在 JavaScript 中,要实现选择多个文件,可以使用 HTML 的<input>元素的multiple属性。以下是示例代码:
友儿
2024/07/31
2730
轻松实现多图片上传:选择文件夹与拖拽上传区域全攻略
单文件上传
随着Web应用的普及,文件上传功能成为许多网站和应用不可或缺的一部分。本文整理了个人学习过程中的笔记,为开发者提供全面的了解和实践经验。
云叶知秋
2024/01/07
3060
写给新手前端的各种文件上传攻略,从小图片到大文件断点续传
今年国庆假期终于可以憋在家里了不用出门了,不用出去看后脑了,真的是一种享受。这么好的光阴怎么浪费,睡觉、吃饭、打豆豆这怎么可能(耍多了也烦),完全不符合我们程序员的作风,赶紧起来把文章写完。
coder_koala
2019/11/04
3.3K0
写给新手前端的各种文件上传攻略,从小图片到大文件断点续传
【不用框架】文件上传和下载
什么是文件上传? 文件上传就是把用户的信息保存起来。 为什么需要文件上传? 在用户注册的时候,可能需要用户提交照片。那么这张照片就应该要进行保存。 上传组件(工具) 为什么我们要使用上传工具? 为啥我们需要上传组件呢?当我们要获取客户端的数据,我们一般是通过getParameter()方法来获取的。 上传文件数据是经过MIME协议进行分割的,表单进行了二进制封装。也就是说:getParameter()无法获取得到上传文件的数据。 我们首先来看看文件上传http是怎么把数据带过去的 jsp页面,表单一定要指定
Java3y
2018/03/15
1.8K0
【不用框架】文件上传和下载
Nodejs实现图片的上传、压缩预览、定时删除。
这里我们用到的是koa框架,它可是继express框架之后又一个更富有表现力、更健壮的web框架。
Vam的金豆之路
2021/11/30
1.6K0
Nodejs实现图片的上传、压缩预览、定时删除。
html之file标签 --- 图片上传前预览 -- FileReader
记得以前做网站时,曾经需要实现一个图片上传到服务器前,先预览的功能。当时用html的<input type="file"/>标签一直实现不了,最后舍弃了这个标签,使用了其他方式来实现了这个功能。
tandaxia
2018/09/27
5K1
html之file标签 --- 图片上传前预览 -- FileReader
linux下php导入带图片的word文档转为html,图片保存下来生成路径。
如果出现异常,在页面上不一定表现出来,而是页面卡着一直没响应,通过apache日志看到相关错误
用户8824291
2021/07/13
1.6K0
SpringMVC返回JSON数据以及文件上传、过滤静态资源
在如今前后端分离的趋势下,后端基本不需要再去关心前端页面的事情,只需要把数据处理好并通过相应的接口返回数据给前端即可。在SpringMVC中,我们可以通过@ResponseBody注解来返回JSON数据或者是XML数据。
端碗吹水
2020/09/23
1.5K0
SpringMVC返回JSON数据以及文件上传、过滤静态资源
文件上传那些事儿
导语 作为一枚初入鹅厂的鲜鹅,对这里的一切都充满着求知欲。看到我们的KM平台如此生机勃勃,各种技术分享交流如火如荼,在努力的汲取着养分的同时也期待自己能为这个生态圈做出贡献。正好新人导师让我看看能否把
谭伟华
2017/05/04
10.8K5
Spring MVC-09循序渐进之文件上传(基于Servlet3.0+Html5客户端上传文件)
虽然Servlet3.0+中上传文件,我们在服务端编程即可非常容易,但是用户体验却不是非常友好。单独的一个HTML表单并不能显示进度条,或者显示已经成功上传的文件数量。
小小工匠
2021/08/17
7180
微信小程序环境下将文件上传到 OSS
步骤 1: 配置 Bucket 跨域 客户端进行表单直传到 OSS 时,会从浏览器向 OSS 发送带有 Origin 的请求消息。OSS 对带有 Origin 头的请求消息会进行跨域规则(CORS)的验证。因此需要为 Bucket 设置跨域规则以支持 Post 方法。
达达前端
2019/07/03
5.3K0
微信小程序环境下将文件上传到 OSS
Web---文件上传-用apache的工具处理、打散目录、简单文件上传进度
在这个上传中,我们并没有把uuid和文件名联系起来,这样是不好的,必须用数据库把uuid和其对应的文件名存起来。以后下载的时候还给客户端一样的名字,而不是给他uuid的名字。
谙忆
2021/01/21
1.1K0
Web---文件上传-用apache的工具处理、打散目录、简单文件上传进度
《Ajax科普入门》用Ajax写个经典影视台词网易云评论无限滚动
为了让提升用户体验,微软在IE5中引入了XMLHttpRequest, 简称XHR,XMLHttpRequest的出现,可以让网页无需刷新,即可从服务器获取最新的内容,这项技术也就是所谓的Ajax
zhaoolee
2021/12/07
1.2K0
《Ajax科普入门》用Ajax写个经典影视台词网易云评论无限滚动
推荐阅读
相关推荐
文件上传---动作条
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验