在sevlet3.0以前,java上传文件很麻烦,要么用底层的request.getinputstream。获取流,但是这个流不是干净的流,报过上传的文件名都在文件的前部分,包括文件的结尾也有特殊的字符。需要使用io层层过滤。提取你所需要的文件,鉴于水平有限,我只能提txt文本文件的内容,然而一道图片处理总是丢失或者多出一些东西来。知道原理后也不打算深入研究。
另外就是使用外部jar包上传文件,这种也是基于request.getinputstream。获取文件,只不过人家帮你把方法封装好,你只需使用即可。
但是自从sevlet3.0出来之后这一切就改变了。出现一个part类,这个类把各个部分相对较干净的分离,尤其是文件输入流。你得到的流就是干净的流,直接正常的io读取就可以。在学习part的过程中,你可以一步步试探的学习,打印看看出来的是什么。然后截取有用的,最后上传为文件就好了。
附上代码:
首先:jsp部分upload.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="utf-8"%>文件上传实例</title>
</head>文件上传实例 </h1>选择一个文件:</form>
</body>
</html>

sevlet部分

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Collection;import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;@MultipartConfig
public class doupload extends HttpServlet {public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");//防止乱码,一定要有Part part=request.getPart("file");//名称upload(part);//下载文件}public String getname(Part part)//获取名称{String contentdisposition=part.getHeader("content-disposition");//form-data; name="file"; filename="jsp学习.txt"String[]filename=contentdisposition.split("=");//分隔String filename1=filename[filename.length-1];//"jsp学习.txt"String filename2=filename1.replace("\"", "");return filename2;}public void upload(Part part) throws IOException{String path=this.getServletContext().getRealPath("fileget/");//专门创建一个fileget文件夹存取内容File file=new File(path);if(!file.exists())//不存在就新建文件夹{file.mkdir();}File file2=new File(file,getname(part));//创建文件if(!file2.exists()){file2.createNewFile();}InputStream in=part.getInputStream();OutputStream out=new FileOutputStream(file2);byte by[]=new byte[1024];   while(in.read(by, 0, 1024)!=-1){out.write(by);by=new byte[1024];}in.close();out.close();}
}

xml配置:

<web-app><servlet>
<servlet-name> doupload2</servlet-name>
<servlet-class>  com.runoob.test.doupload</servlet-class></servlet><servlet-mapping>
<servlet-name> doupload2</servlet-name><url-pattern>/doupload2</url-pattern></servlet-mapping>
</web-app>

经测试可以上传大部分文件,但是文件上传没有优化,如果你想优化,可以使用buffered缓存优化,至于其他优化就不太知道了,本人小白。如果有的可以交流!

sevlet3.0上传文件功能相关推荐

  1. java 转发上传文件_Java 发送http请求上传文件功能实例

    废话不多说了,直接给大家贴代码了,具体代码如下所示: package wxapi.WxHelper; import java.io.BufferedReader; import java.io.Dat ...

  2. jQuery+php+ajax实现无刷新上传文件功能

    2019独角兽企业重金招聘Python工程师标准>>> jQuery+php+ajax实现无刷新上传文件功能,还带有上传进度条动画效果,支持图片.视频等大文件上传. js代码: &l ...

  3. php实现上传文件功能,简单实现php上传文件功能

    本文实例为大家分享了php上传文件功能的具体代码,供大家参考,具体内容如下 html: 文件名: php: // 允许上传的图片后缀 $allowedExts = array("gif&qu ...

  4. vue上传文件到php,vue+axios+php如何实现上传文件功能?,formdata上传文件附加参数...

    vue+axios+php如何实现上传文件功能?Vue Axios PHP如何实现上传文件的功能?, 推荐:<PHP视频教程> 当我们提交表单时,我们经常会遇到一些表单提交要求.vue的a ...

  5. java上传文件功能_Java MemoryMapped文件的功能

    java上传文件功能 Java MemoryMapped文件的功能 在JDK 1.4中,内存映射文件的一个有趣功能被添加到Java中,该功能允许将任何文件映射到OS内存以进行有效读取. 内存映射文件可 ...

  6. java远程执行功能_Java远程连接Linux服务器并执行命令及上传文件功能

    Java远程连接Linux服务器并执行命令及上传文件功能 发布于 2020-3-6| 复制链接 摘记:  最近再开发中遇到需要将文件上传到Linux服务器上,至此整理代码笔记.此种连接方法中有考虑到并 ...

  7. 超详细的实现上传文件功能教程,文件上传实现。

    重要声明:本文章仅仅代表了作者个人对此观点的理解和表述.读者请查阅时持自己的意见进行讨论. 本文更新不及时,请到原文地址浏览:<超详细的实现上传文件功能教程,文件上传实现.>. 一.文件上 ...

  8. js ajax上传文件功能

    js ajax上传文件功能 ajax请求 php接收文件(yii框架) ajax请求 <form enctype="multipart/form-data"><i ...

  9. php iframe 上传文件,php+iframe 实现上传文件功能示例

    本文实例讲述了php+iframe 实现上传文件功能.分享给大家供大家参考,具体如下: 我们通过动态的创建iframe,修改form的target,来实现无跳转的文件上传. 具体的实现步骤 1.捕捉表 ...

最新文章

  1. 【转】第一类Stirling数和第二类Stirling
  2. 海康 安全码 修改密码_手机为什么要设置PIN码 手机设置PIN码的原因【介绍】
  3. .Net装箱拆箱编程实例
  4. 盈客在线陈清平:数据驱动让传统餐饮业焕发新活力
  5. UEFI主板GPT方式安装CentOS 6.4
  6. python套用word模板_如何使用Python批量创建Word模板
  7. HttpClient官方sample代码的深入分析(连接池)
  8. 10193 条票房数据告诉你《流浪地球》领跑的电影档战果如何?
  9. php后缀名隐藏,php隐藏后缀名的方法是什么
  10. 警告:MySQL-server-5.6.26-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
  11. 运维自动化之5 - 基于LVS实现4层负载均衡应用
  12. 如何快速高效的群发Email
  13. 南京农业大学计算机学硕分数线,2020南京农业大学考研复试分数线已公布
  14. 【室内园艺】——栀子花
  15. 批处理睡眠 延时脚本
  16. 基于Docker的frp内网穿透
  17. NVIDIA GeForce GTX 1060 驱动安装--------TensorFlow系列学习笔记(一)
  18. SQLExceptioncom.mysql.jdbc.SQLError in createSQLException Incorrect string value: '\xF0\x9F\x99\x8F'
  19. 上海市促进文化创意产业发展财政扶持资金项目政策解读
  20. 创造与魔法java语言_《创造与魔法》最全魔法融合公式一览

热门文章

  1. C++ Primer 5th笔记(chap 14 重载运算和类型转换)二义性类型转换
  2. 初等数论--整除--判断一个数是否是素数
  3. 05-密码学基础-RSA的介绍
  4. 2022-01-17
  5. Fabric--CA 应用与配置
  6. python的openpyxl库如何读取特定列_通过渲染一百万个网页,来了解网络是如何崩溃的...
  7. 设计模式C++实现(4)——单例模式
  8. Linux 下使用openSSL 生成RSA密钥对
  9. python爬虫,爬取糗事百科并保存到文件中
  10. 6、检查约束(CHECK)