java 单文件上传_javaweb实现简单的文件上传

JavaWeb实现文件的上传

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

文件上传功能解释:

当用户在前端网页点击文件上传后,用户上传提交的内容会存放到临时的文件中,我们使用getpart来获取Part对象,

并通过Part对象获得流,javaWeb的servlet会获得用户所提交的文件并且将文件存放到服务器里

上传工具类的使用

commons-fileupload-1.2.2.jar

commons-io-2.1.jar

相关jar包的下载地址

将jar包放到WEB-INF的lib目录下

JSP端 用户选择文件并将文件上传

文件上传

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);

}

}

启动工程之后

ded718847e0263a5a569eb4c4ccefa7b.png

选择上传的文件点击上传,并在服务器目录下得到上传的文件

fb5e55cd251feb3cc312de651db50b28.png

注意事项

1.相关的标注

@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

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

客户端还需要使用

3.如果提示当前目录不存在。

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

//先创建这个文件

File file=new File(uploadFullPath);

File ParentFile=file.getParentFile();

if(!ParentFile.exists())

{

ParentFile.mkdirs();//如果文件夹不存在,就创建文件夹

}

当然这样的上传方式不是很安全,而且没有对于文件类型过滤等操作,没有对恶意代码进行过滤操作。

我也是刚接触不久,有错误的地方欢迎大家可以指出,以后会相应的对这方便内容进行补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值