J2EE如何实现Servlet上传文件到服务器并相应显示功能

发布时间:2021-07-10 11:44:54

来源:亿速云

阅读:82

作者:小新

这篇文章将为大家详细讲解有关J2EE如何实现Servlet上传文件到服务器并相应显示功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

编辑上传文件的页面upload.html

注意事项:上传方式使用POST不能使用GET(GET不能上传文件)

表单 enctype 属性应该设置为 multipart/form-data.(表示提交的数据是二进制文件)

upload.htmlhtml>

文件上传

人物名称:

上传头像:

UPloadPtotoServlet文件上传类--上传功能的开发

将commons-io-1.4.jar和commons-fileupload-1.2.2.jar 两个jar包放到WEB-INF/lib 目录下。import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.PrintWriter;

import java.util.Iterator;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

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.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

/**

* Servlet implementation class UploadPhotoServlet

*/

@WebServlet("/UploadPhotoServlet")

public class UploadPhotoServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#HttpServlet()

*/

public UploadPhotoServlet() {

super();

// TODO Auto-generated constructor stub

}

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

//    response.getWriter().append("Served at: ").append(request.getContextPath());

String filename=null;

DiskFileItemFactory factory=new DiskFileItemFactory();  //磁盘文件条目工厂

ServletFileUpload upload=new ServletFileUpload(factory); //负责处理上传的文件数据,并将表单中每个输入项封装成一个fileitem对象中

//设置上传文件的大小为10M

factory.setSizeThreshold(2*1024*1024);

List items=null;

try {

//parse 解析

items=upload.parseRequest(request);  //得到一个保存了所有上传内容的List对象

} catch (FileUploadException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

Iterator iter=items.iterator();  //迭代上传的文件数据

while(iter.hasNext()){

FileItem item=(FileItem) iter.next();

if(!item.isFormField()){ //如果不是上传的

//根据时间戳创建头像文件

filename=System.currentTimeMillis()+".jpg";

//通过getrealpath获取上传文件夹,如果项目存在将存在当前项目下 不存在的话创建项目文件夹

//图片文件夹

String photoFolder=request.getServletContext().getRealPath("uploaded");

File f=new File(photoFolder,filename);

f.getParentFile().mkdirs(); //如果父文件夹不存在则自动创建

//通过item.getInputStream() 获取浏览器上传的文件

InputStream is = item.getInputStream();  //将文件读进来

//复制文件

FileOutputStream fos=new FileOutputStream(f); //往界面上显示

byte[] b=new byte[2*1024*1024];

int len=0;

while((len=is.read(b))!=-1){

fos.write(b, 0, len);

}

fos.close();

}else{

System.out.println(item.getFieldName());//heroName

String value=item.getString();

value=new String(value.getBytes("ISO-8859-1"), "UTF-8");

System.out.println(value);  //桑葚

}

}

String html="";

response.setContentType("text/html");

PrintWriter pw=response.getWriter();

pw.format(html, filename);

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

doGet(request, response);

}

}

运行结果:

关于“J2EE如何实现Servlet上传文件到服务器并相应显示功能”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

上传文件到服务器并显示,J2EE如何实现Servlet上传文件到服务器并相应显示功能...相关推荐

  1. 梦幻西游进服务器不显示角色,《梦幻西游》电脑版角色转移服务器查询

    为了让玩家能够在游戏过程中获得更多的合适选择,从而获得更多乐趣及更丰富的游戏体验,我们在推出"角色转移"的基础上推出"转服拍卖"功能. 转服拍卖功能面向范围 玩 ...

  2. 服务器血量显示插件,RealMobHealth 真实怪物血量数值新增全服务器怪物NPC血量缓存文件...

    记录怪物所遭受的伤害,并在其死亡时缓存血量最终值. 插件内置一种推测模式,通过获取当前记录的伤害和战斗中的生命百分比来推测怪物的最大生命值. 这是一个非常早期的插件,因此可能存在准确性问题.会在后续进 ...

  3. 服务器开机显示mm,【分享】mmrecov到新的服务器后,启动RPC服务的问题

    分享一个mmrecov到新的服务器后,启动RPC服务的问题:- 我已经安装NW软件(7.6.3)到一个新的服务器(和旧的相同 - 在这些方面:OS,名称,IP,主机文件) - 运行正常,- 从旧服务器 ...

  4. u盘中的android文件夹图标不显示,个性化自己U盘里的文件夹图标不让其随着文件夹的移动而改变...

    U盘里的文件夹图标总是那么几种,相信有不少朋友一定看腻了,想要个性化自己U盘里的文件夹图标,并且这些自定义的图标不会随着文件夹的移动而变样或失效.看起来还是个挺难完成的任务呢,不过跟着小编一起来操作, ...

  5. u盘插上后响一下但不显示,在其他电脑上可以用。

    确认自己的电脑不缺少这两个文件 C:\Windows\System32\drivers\USBSTOR.SYS C:\Windows\inf\usbstor.inf 然后,在计算机图标右键选择管理,找 ...

  6. linux 文件 16进制显示,linux 16进制 产看文件

    hexdump - ascii, decimal, hexadecimal, octal dump 查看十六机制的首选工具. -c 每单元以字节为单位,显示出对应的ASCII码 -C 每单元以字节为单 ...

  7. dell服务器t310显示ctrle,L375E-S0 PS-5371-1D-LF 375W T128K T122K T310 DELL服务器电源

    ' L375E-S0 PS-5371-1D-LF 375W T128K T122K 戴尔DELL PowerEdge T310塔式服务器电源批发DELL服务器DELL存储DELL刀片DELL交换机等整 ...

  8. 剑网3服务器一直显示维护,8月3日例行维护完毕 服务器已正常开启

    文章内容来自官方. 尊敬的玩家: 8月3日6:30分全区全服将进行例行维护,为了避免出现游戏内数据异常的情况,请大家维护前及时下线.预计维护时间5小时,如遇特殊情况将会顺延. <剑侠情缘网络版叁 ...

  9. Pycharm远程服务器无法显示图片

    Pycharm远程服务器无法显示图片 ###################更新2021/01/17############################# 在pycharm远程服务器情况下,直接用 ...

最新文章

  1. matlab 数据集制作,机器学习数据集制作与划分MATLAB实现
  2. hdu 4778 Gems Fight! 状压dp
  3. 你知道 int(1) 和 int(10) 的区别吗?
  4. Java short 无符号右移_char类型byte类型或short类型进行无符号右移遇到的神奇问题...
  5. Android Studio 安装具体步骤(配图)
  6. 智能读物产品优化、运营方案
  7. NekoHTML学习笔记
  8. vs2013的matconvnet_MatConvNet 安装使用
  9. vscode eslint beautify 格式化 html
  10. Android工程师进阶第五课 多线程锁,线程池和DVM/ART优化
  11. 拼图游戏java(三)实现鼠标点击图片上下左右移动
  12. 《酬乐天扬州初逢席上见赠》
  13. Vue routers
  14. C++游戏——小胎大乱斗
  15. 阿里云发短信错误SignatureDoesNotMatch
  16. NAS实现家用服务器
  17. GRO checksum在tcpdump中incorrect的问题
  18. 数据安全评估体系建设
  19. 如何让自己在云服务器上部署的进程一直运行而无需一直连接服务器
  20. 扫盲啦!!!回囙囜囝回囟因囡団囤囥囦囧囨囩囱囫回囮国困囱囲図囵囶囷囸囹

热门文章

  1. android flash闪退,Android全面停止Flash Adobe专注HTML5
  2. 视频播放的方法Android,详解Android App中使用VideoView来实现视频播放的方法
  3. matlab曲线拟合法,MATLAB曲线拟合
  4. extjs store 复杂json_extjs 2.3 修复 jsonstore 嵌套多级引用数据NULL的BUG
  5. 全面讲解Python列表数组(二),列表分区/片,列表操作符,比较操作符,逻辑操作符,连接操作符,重复操作符,成员关系操作符;
  6. 使用Python 转化成 PB 格式数据的方法
  7. python中 __str__和__repr__
  8. python读写修改配置文件(ini)
  9. Python 面试题:输入一个数组,输出该数组的第二大的数字
  10. vue 实现无限轮播_用vue写一个轮播图效果