servlet上传附件代码

第三方插件完成附件上传 MultipartRequest类实现文件上传 需要二个jar包,实现附件的上传 Servlet代码 package session; import java.io.IOException; import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpSe... 阅读详情

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

servlet类:

package cn.itcast.service;

import java.io.IOException;
import java.io.PrintWriter;
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.ProgressListener;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
/***
 * 通过servlet上传附件
 * @author huawei
 *
 */
public class HandleFileServlet extends HttpServlet{

 private static final long serialVersionUID = 1L;
 @Override
 protected void service(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException{
  request.setCharacterEncoding("UTF-8");
  response.setCharacterEncoding("UTF-8");
  
  String uri = request.getRequestURI();
  uri = uri.substring(uri.lastIndexOf("/"), uri.lastIndexOf("."));
  
  if(("/uploadfile").equals(uri)){
   //设定临时目录
   DiskFileItemFactory factory = new DiskFileItemFactory();
   //factory.setSizeThreshold(1024*1024);          //设定了1M的缓冲区,对于大文件需要通过创建临时目录来缓存
   //factory.setRepository(new File("E:/temp"));   //设置上传文件的临时目录

   //可以需要临时目录,也可以不需要
   ServletFileUpload fileUpload = new ServletFileUpload(factory);
   //限制上传文件的大小
   fileUpload.setSizeMax(10 * 1024 * 1024);
   //实现进度监听:需要实现对文件上传进度的监听,需要给FileUpload 对象添加 ProgressListener
   fileUpload.setProgressListener(new ProgressListener() {
    long num = 0;
    @Override
    public void update(long bytesRead, long contentLength, int items) {
     long progress = bytesRead*100/contentLength;
           if(progress == num)
            return;
           num = progress;
          
           System.out.println("上传进度: " + progress + "%");
           //request.getSession().setAttribute("progress", progress);
           /*try {
      response.getWriter().write("上传进度: " + progress + "%" + "<br/>");
     } catch (IOException e) {
      e.printStackTrace();
     }*/
    }
   });
   
   try {
    @SuppressWarnings("unchecked")
    List<FileItem> items = fileUpload.parseRequest(request);
    for(FileItem item : items){
     if(item.isFormField()){// 判断是普通表单文件,还是文件流文件
       System.out.println("表单参数名:" + item.getFieldName()
                              + ",表单参数值:" + item.getString("UTF-8"));
     }else{
      PrintWriter out = response.getWriter();
      if(item.getName() != null && !item.getName().equals("")){
       out.write("上传文件的大小:" + item.getSize() + "<br/>");   //上传文件的大小:33403
       out.write("上传文件的类型:" + item.getContentType() + "<br/>"); //上传文件的类型:image/x-png
       //item.getName()返回上传文件在客户端的完整路径名称
       String fileName = item.getName();
       fileName = fileName.substring(fileName.lastIndexOf("\\")+1); 
       out.write("上传文件的名称:" + fileName);       //上传文件的名称:mysql_to_java.png
      }else{
       out.write("没有选择上传文件!");
      }
     }
    }
   } catch (FileUploadException e) {
    e.printStackTrace();
   }
  }
 }
}

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

请求的jsp文件:

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html version="-//W3C//DTD HTML 4.01 Transitional//EN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>文件上传</title>
</head>

<body>
 <form action="servlet/uploadfile.do" enctype="multipart/form-data" method="post">
  <input type="file" value="file" name="file"/>
  <br />
  <input type="submit" value="submit" />
 </form>
</body>
</html>

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

web.xml

<servlet>
 <servlet-name>uploadfile</servlet-name>
   <servlet-class>cn.itcast.service.HandleFileServlet</servlet-class>
  </servlet>
  <servlet-mapping>
   <servlet-name>uploadfile</servlet-name>
   <url-pattern>/servlet/uploadfile.do</url-pattern>
  </servlet-mapping>

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

主要使用的如下:

FileItem-------DiskFileItemFactory-----ServletFileUpload

作用:
FileItem            用来封装表单中的元素和数据。

ServletFileUpload   处理表单数据,将数据封装到 FileItem 对象中。

DiskFileItemFactory FileItem 对象的工厂,可以设定缓冲区大小和存放临时文件目录。

ServletFileUpload   处理上传的文件的数据,优先保存在缓冲区,如果数据超过了缓冲区大小,则保存到硬盘上,存储在DiskFileItemFactory指定目录下的临时文件。数据都接收完后,它再在从临时文件中将数据写入到上传文件目录下的指定文件中,并删除临时文件。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

api:

1. DiskFileItemFactory 对象

    设置缓冲区大小,字节为单位,默认为10K,一般不用修改

    factory.setSizeThreshold(1000);

    设置临时文件存放目录

    factory.setRepository(file);

2. ServletFileUpload 对象

    判断是否为文件上传表单

    boolean b = upload.isMultipartContent(request);

解析request对象

List<FileItem> list = upload.parseRequest(request);

设置上传文件的最大值

    setFileSizeMax(long fileSizeMax)

    设置上传文件总量的最大值

    setSizeMax(long sizeMax)

    设置编码格式

    setHeaderEncoding(java.lang.String encoding)

    注册进度监听器

setProgressListener(ProgressListener pListener)

3. FileItem 对象

    获得表单字段的属性名

    item.getFieldName();

    获得普通字段的值

    item.getString(charsetName)

    获得文件上传字段的文件名

    item.getName()

    获得文件上传的流

    item.getInputStream()

 

Python实现将txt文件转换成对应的excel或csv文件 此外,在上面的例子中,txt文件是以“空格”分隔的,如果遇到“逗号”分隔的,只需将上述代码中的。本文是该专栏的第29篇,后面会持续分享python的各种干货知识,值得关注。工作上可能会遇到这样的情况,使用python将某个txt文本,按照。转换成对应的excel文件或者是csv文件。”需要替换成你的目标txt文件的绝对路径。库,这里直接引用就好。需要注意的是,上述代码中的“ 阅读详情

相关推荐

modbus-esp8266库深度解析:工业级Modbus协议栈实现

Modbus是一种广泛应用于工业自动化领域的通用串行通信协议,其核心在于标准化的功能码、寄存器模型与帧结构设计。基于RTU、ASCII和TCP三种传输变体,Modbus协议通过主从架构实现设备间可靠数据交互,具备低开销、高兼容性与强实时性等技术价值。在边缘计算与工业物联网场景中,它被广泛用于PLC通信、传感器数据采集、HMI集成及远程固件升级(FOTA)等关键任务。针对ESP8266/ESP32等Wi-Fi微控制器平台,modbus-esp8266库提供了完整协议栈支持,涵盖多实例并发、回调驱动架构、零拷贝

weixin_42315569的博客 349

servlet+uploadify+commons-fileupload实现文件上传

先吐槽一下使用那些没有完整API的jar包,一步一个坑,网上很多代码都是有bug的,拿来主义+清除bug!   1.commons-fileupload.jar在servlet中用来处理文件上传,比较简便,(尼玛,早知道用struts了,自己写一大堆什么获取参数,倒腾了好久,struts一个file映射,轻松搞定文件上传啊,为了用servlet实现,倒腾了一晚上。)主要注意在servlet中如何

凡事预则立,不预则废 756

YOLOv5 改进点总览:轻量化、高精度的背后有哪些魔改?

YOLOv5是由Ultralytics团队开发的高效目标检测模型,其核心改进包括:主干网络采用CSPDarknet53提升梯度传播效率;特征融合使用PANet增强小目标识别;输出结构采用解耦头设计优化定位和分类任务。此外,YOLOv5通过CIoU损失函数、Mosaic数据增强和SimOTA标签分配机制进一步提升性能。模型支持多种推理格式(ONNX/TensorRT等),并具备自动锚框匹配和多尺度训练功能,使其在轻量化(yolov5s仅7MB)与高性能(最高51.2% mAP)间取得平衡,但缺乏正式论文支撑是

guoguozgw的博客 1805

Servlet-文件的上传和下载

Servlet的上传前端页面后端代码Servlet文件的下载前端代码后端代码 Servlet的上传 前端页面 注意点:文件上传的方式必须是post请求,必须为文件框添加属性:enctype=“multipart/form-data” <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>文件上传</title> </head&g.

weixin_44342481的博客 313

Qt+WebAssembly学习笔记(六)win10+Qt6.4.0rc1开发环境搭建

前言:因项目的缘故,笔者有段时间没测试了,官方也修复了很问题,笔者今天记录下最新版本环境搭建。

aggs1990的专栏 3766

OSMDroid(1)——OSM简介,基础例子搭建

1.OSMDroid简介 Osmdroid是一款完全开源的地图基本操作SDK,相比于现在普遍使用的百度地图,高德地图,谷歌地图等最大的好处就是开源。 最近在做一个军方项目,要求完全不能联网,从开发到应用整个阶段都是在局域网进行,相比之下采用了OSMDroid这个SDK作为解决方案。 先来看OSMDroid,便是(OpenStreetMapForAndroid),后面都简称OSM...

robotskly的博客 6178

上传文件导致OOM

背景:使用hutool工具进行文件上传。 直接上代码: <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.1.0</version> </dependency> import cn.hutool.http.HttpRequest

u013813491的专栏 3086

产品经理必备知识——API接口

在古代,我们的传输信息的方式有很多,比如写信、飞鸽传书,以及在战争中使用的烽烟,才有了著名的烽火戏诸侯,但这些方式传输信息的效率终究还是无法满足高速发展的社会需要。如果你选择允许,app就会根据你的当前位置为你提供更加个性化的一些服务,当然也有一些app拿到你的位置信息做出损害用户利益的行为,所以还是需要谨慎授权。首先,看接口文档的场景一般是自身业务模块需要获取外部的数据,但又不想自己重新开发,寻找外部已经实现的有开放能力的供应商(包含企业内部的)。通过发送请求和响应消息的方式实现程序间的通信。

WBKJ_Noah_的博客 3455

java异常_异常、堆内存溢出、OOM的常见情况及解决方案

堆内存溢出【情况一】:java.lang.OutOfMemoryError: Java heap space:这种是java堆内存不够,一个原因是真不够,另一个原因是程序中有死循环;如果是java堆内存不够的话,可以通过调整JVM下面的配置来解决:< jvm-arg>-Xms3062m < / jvm-arg>< jvm-arg>-Xmx3062m < /...

weixin_39628594的博客 626

isaaclab无法识别NVIDIA显卡,如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!    📌 特别说明: 文中部分技术问题来源于真实生产环境及网络公开案例,均经过精挑细选与系统化整理,并结合多位一线资深架构师和工程师多年实战经验沉淀,提

**My Coding Family** 1146

霜冰优化算法(RIME)详解:从自然现象到智能优化

霜冰优化算法(RIME)是一种新型元启发式优化算法,灵感源于自然界中霜冰的形成过程。该算法通过模拟软霜和硬霜的不同生长特性,实现了高效的全局探索和局部开发平衡。RIME算法包含三个核心机制:软霜搜索策略模拟随机覆盖特性实现全局探索;硬霜穿刺机制模拟定向生长特性进行局部开发;正向贪婪选择机制确保解的持续优化。与遗传算法、粒子群算法相比,RIME具有参数少、收敛快、自适应平衡等优势,特别适合处理高维复杂优化问题。算法已在工程优化、机器学习等领域获得广泛应用,发表一年内即成为高被引论文。

qq_42212808的博客 783

servlet实现上传附件

一、简单介绍 使用 Servlet上传附件 原理上还是蛮简单的,首先获取上传的附件对象,然后做一些简单处理 后写入到指定路径的磁盘中。 二、准备条件 common-io.jar ,下载地址:http://commons.apache.org/io/download_io.cgi common-upload.jar ,下载地址:http://jakarta.apache.org/commons/f...

人生若只如初见的博客 747

位置点位到达判断FC(Easy+Codesys+博途平台)

IN rActPositon REAL 轴当前实际位置 1IN arAbsPosition REAL[10] 各工作点位坐标 2IN rDeadZone REAL 位置达到判断域值 范围 3OUT abInAbsPos BOOL[10] 到达各绝对定位点位标志 位置到达输出 4VAR i INT 循环计数 5VAR rErr REAL 位置偏差 6。

RXXW_Dor的博客 536

java fileupload上传附件到服务器,可携带参数(简单易用)可跨域,看这篇就够了

一个很简单实用的上传附件实例 首先主要用到的包: 先看服务端代码,我这里是用了Servlet,在web.xml配置 <servlet> <servlet-class>com.file.FileEntryServlet</servlet-class> <servlet-name>FileServlet</servlet-name> </servlet> <servlet-ma.

编程界明世隐的博客 2175

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

关于JSP/Servlet文件上传与下载

最近Java项目上有个文件上传的功能需求,当然有上传就存在对应的下载需求。由于项目的框架由前辈搭建好了,对于功能上的需求就直接往框架中添加模块,完全采用CTRL+C/V的方式在已有的代码上做相应的修改,没撒技术含量,就这个小的功能需求对于目前这种景况也算是一个插曲 – 需要自己实现。 通过多天的代码编写与测试,终于完成对上传/下载的实现,先将其过程详细记录,以备后续总结。 ...

weixin_33692284的博客 156

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SWFUpload+COS 上传组件+servelet 实现大附件上传

去年的时候整理过例子,源地址我的iteye bolg: http://blog.youkuaiyun.com/misswuyang/article/details/5412375 这几天一直在整理一些以前的例子,并且优化了一下,也改写了一些swfupload 的源码,使其适应项目的开发。 新版本在线预览地址:http://220.178.14.19:8081/...

编程资料大全 172

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

nc/ncc 接口集成 附件上传下载

【代码】nc/ncc 接口集成 附件上传下载。

xiaofei_32的博客 1559

图片的上传

1:使用apache的插件:commons-fileupload.jar实现附件的上传 2:编写页面:upload.jsp 3:编写上传附件servlet:PicUploadServlet.java 4:配置web.xml upload.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" p

kandy的专栏 581

Java 文件上传与下载、email

1. 文件上传与下载 1.1 文件上传 文件上传,要点: 前台: 1. 提交方式:post 2. 表单中有文件上传的表单项: ”file” /> 3. 指定表单类型: 默认类型:enctype="application/x-www-form-urlencoded" 文件上传类型:multipart/form-data 手动实现文件上传     "frm_test" action="${p

BurningMyself 1万+

javaWeb中文件上传

新建一个jsp: &lt;%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%&gt; &lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/htm

QQ:690217293 135

uploadify 302 java_uploadify3.2基于javaSSh框架jsp页面的整合

最近做毕业设计——oa系统,在邮箱这块用到了附件上传。在度娘找了好多jquery的控件,最终选择了uploadify。首先去官网下载uploadify ——http://www.uploadify.com/(选择falsh版本,html5是付费服务).解压后可以看到项目构建图2 导入包编写jsp页面代码$(function() {$('#file_upload').uploadify({ ...

weixin_39611930的博客 152

JavaWeb的文件上传与下载

目录:一、文件的上传1、文件上传时发送的http内容2、使用第三方的 API(1)导入两个jar包(2)常用的类有哪些3、fileupload 类库的使用(1)上传文件的表单:(2)解析上传的数据的代码:二、文件的下载三、附件中文名乱码问题解决方案1、方案一2、方案二3、方案一二整合 一、文件的上传 1、要有一个 form 标签,method=post 请求 2、form 标签的 encType 属性值必须为 multipart/form-data 值 3、在 form 标签中使用 input type=f

azhu12138的博客 249

在低开上传附件组件中,调整300m之后,却只能上传100m以下,超过就报错

1、后端配置需调整文件上传大小限制,例:afc 下 application.properties,在低开上传附件组件中,调整300m之后,却只能上传100m以下,超过就报错。2、数据库也需调整,例:mysql。# 允许传送最大数据包大小。

py_doc的博客 251

JavaWeb之文件上传、下载以及邮件的发送

上传文件的要求 表单的要求 1.表单的提交方式必须为POST方式 2.必须添加表单的另一属性enctype=”multipart/form-data” Servlet的要求 1.若表单中加属性enctype,则在Servlet无法使用req.getParameter(“xxx”)方法,任何表单项都会返回null。 2.在Servlet提供了另外一种获取表单数据的方法req.getI...

Bobo‘s Home 928

JavaWeb中文件的上传

1.文件的上传 文件的上传和下载,是非常常见的功能。很多的系统中,或者软件中都经常使用文件的上传和下载。 比如:QQ 头像,就使用了上传。 邮箱中也有附件的上传和下载功能。 OA 系统中审批有附件材料的上传 文件的上传介绍(*****重点) 1、要有一个 form 标签,method=post 请求 2、form 标签的 encType 属性值必须为 multipart/form-data 值 3、在 form 标签中使用 input type=file 添加上传的文件 4、编写服务器代码(Servlet

qq_45554909的博客 297

使用jQuery+SWFUpload+Commons-FileUpload实现带进度条的上传

  注:摘自http://theoffspring.iteye.com/blog/1480092,这里只是做个备份,供自己学习使用!   这两天在找一个可以实现上传时显示进度的ajax库,看了很多10 best ajax uploader之类的文章,发现里面很多链接都点不进去,或者网站文档和demo做得很烂,我这人选开源软件用,一定会看他的文档做得怎么样,做得不全就懒得研究了,swfuplo...

hf312350968的专栏 195
上一篇: 用数组实现Map功能
下一篇: java多线程下载
beyond0851
博客等级 码龄15年 18粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值