JavaWeb(实现文件上传)(一)

  • 通过Servlet来实现文件上传的功能

实现用户将文件上传到服务里的功能

文件上传功能解释:

当用户在前端网页点击文件上传后,javaWeb的servlet会获得用户所提交的文件并且将文件存放到服务器里。

先看servlet端

@MultipartConfig

将该标注配置到服务器servlet上面,否则会忽略掉文件的内容。并且报错,错误信息

严重: Servlet.service() for servlet [com.xyf.web6.UploadServlet] in context with path [/webtest] threw exception
java.lang.IllegalStateException: Unable to process parts as no multi-part configuration has been provided

  

用户上传提交的内容会存放到临时的文件中,我们使用getpart来获取Part对象,

并通过Part对象获得流。另外注意导入

commons-fileupload-1.2.2.jar

commons-io-2.1.jar

到web-inf的lib目录下

servlet端的代码

package com.xyf.web6;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.UUID;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

@WebServlet("/upload")
@MultipartConfig

public class UploadServlet extends HttpServlet {

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	    request.setCharacterEncoding("UTF-8");
        Part part = request.getPart("uploadFile");
	    String inputName=part.getName();
	    InputStream input=part.getInputStream();
	    //想要保存的目标文件的目录下
	    String tagDir=getServletContext().getRealPath("/upload");
	    //避免文件名重复使用uuid来避免,产生一个随机的uuid字符
	    String realFileName=UUID.randomUUID().toString();
	    OutputStream output=new FileOutputStream(new File(tagDir,realFileName));
	    int len=0;
	    byte[] buff=new byte[1024*8];

	    while ((len = input.read(buff)) > -1) {
            output.write(buff, 0, len);
        }

	    input.close();
	    output.close();
	    response.setCharacterEncoding("utf-8");
	    response.getWriter().print("upload success!!");

	}

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

}

jsp端的代码,比较简单

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>文件上传</title>
    </head>
    <body>
        <form action="/webtest/upload" method="post" enctype="multipart/form-data">
            <input type="file" name="uploadFile" /> <br/><br/>
            <input type="submit" value="上传" />
        </form>
    </body>
</html>

  

客户端表单中必须指定method=post,因为上传的文件可能很大,并且指定enctype=multipart/form-data使用上传文件专门的编码方式

 enctype="multipart/form-data"

另外客户端还需要使用<input type="file" 选择要上传的文件

服务器启动后:

选择当前电脑上的文件点击上传

在路径G:\eclipse\eclipse\eclipse\worksapceeeeeeee\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\webtest\upload

可能会出现文件不存在的错误,这个时候需要先去判断 ,如果不存在就创建,添加以下代码在servlet里

 String uploadFullPath=tagDir;
	    //先创建这个文件
	    File file=new File(uploadFullPath);
	    File ParentFile=file.getParentFile();
	    if(!ParentFile.exists())
	    {
	    	ParentFile.mkdirs();//如果文件夹不存在,就创建文件夹

	    }

  这样我们的上传就算是完成了,当然这样上传是不安全的。有关上传的安全问题下文中会讲。

时间: 2024-11-08 21:49:14

JavaWeb(实现文件上传)(一)的相关文章

JavaWeb实现文件上传下载功能实例解析

转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件

JavaWeb实现文件上传下载功能实例解析 (好用)

转: 转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上

使用传统javaweb进行文件上传

使用传统文件上传方式 1.配置依赖 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> <spring.ve

深入分析JavaWeb Item40 -- 文件上传和下载

在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件.这个common-fileupload上传组件的jar包可以去apache官网上面下载,也可以在struts的lib文件夹下面找到,stru

JavaWeb之文件上传与下载&amp;邮件技术(十八)

文件上传 简介 最近发现这几篇很少写简介,说自己没时间写,可能是说服自己吧.总之能多写就多写.还有个一直存在的问题,每天写的博客质量不是很好.再次说服自己,现在处于学习阶段,写博客为了巩固知识点,以便后期作复习使用.其实我每次写博客之前笔记老早都在nopad++上写好了,所以大部分在wlw上直接粘贴的,请见谅 1. 文件上传必要前提 1. form表单:属性enctype必须取值为multipart/form-data enctype的默认值是:application/x-www-form-ur

javaWeb之文件上传

//要完成文件上传,前提: //1.表单提交方式必须是:"POST", //2.需要在表单头中添加  enctype="multipart/form-data" //需要借助以下这些jar包 commons-fileupload.jarcommons-io.jar 以下是服务端代码: public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletE

JavaWeb之文件上传、下载

时间:2016-12-17 18:07 --文件上传概述 上传不能使用BaseServlet 1.文件上传的作用    例如网络硬盘,就是用来上传和下载文件的. 2.文件上传对表单的限制    1)必须使用表单,而不能是超链接    2)表单的method必须是POST,而不能是GET    3)表单的enctype必须是multipart/form-data    4)在表单中添加type="file",即<input type="file" name=&q

JavaWeb(实现文件上传)(二)

上文中提到了使用servelt服务器读取到浏览器上保存到文件,并将它保存到本地的方法. 首先解决问题一: G:\eclipse\eclipse\eclipse\worksapceeeeeeee\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\webtest\upload 项目的上传的路径是否可以更改?如何更改? 在server服务器中 ①移除所有项目 ②启动server服务器 ③右键tomcat服务器 选择open 在

JavaWeb之文件上传和下载

在如今的互联网时代,人们越来越喜欢将自己的数据存放到互联网上,于是便诞生了很多类型的软件,比如360网盘,百度网盘,云盘之类的.所以说,文件上传和下载的功能是现在非常主流的一个功能,应用十分广泛. 那现在,我们就来学习一下,在web中,如何去实现文件上传和下载! 实现web开发中的文件上传功能,需完成如下二步操作: 在web页面中添加上传输入项 在servlet中读取上传文件的数据,并保存到服务器硬盘中. 如何在web页面中添加上传输入项? 标签用于在web页面中添加文件上传输入项,设置文件上传