JavaWeb实现文件的上传与下载

网友投稿 225 2023-01-23

JavaWeb实现文件的上传与下载

javaWeb实现文件的上传与下载,供大家参考,具体内容如下

第一步:导包

导入commons-fileupload-1.3.3.jar和commons-io-2.4.jar两个依赖包

第二步:编写前端页面

1、提交页面 index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

头像:

2、结果页面 result.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

xx

第三步:编写上传和下载代码

1、上传图片 fileUpload.java

package cn.yz123123.controller;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

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("/fileUpload")

@MultipartConfig

public class fileUpload extends HttpServlet {

private static final long serialVersionUID = 1L;

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

doPost(request, response);

}

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

//String username = request.getParameter("username");

Part part = request.getPart("img");

//获取文件的真实名称

String header = part.getHeader("content-disposition");

String realName = header.substring(header.indexOf("filename=")+10, header.length()-1);

//获取文件自身流

InputStream inputStream = part.getInputStream();

//获取file真实路径,如果没有则创建

String dir = request.getServletContext().getRealPath("/file/");

File dirFile = new File(dir);

//上面只是实例化了一个对象,并没有真正的创建一个文件夹

if (!dirFile.exists()) {

dirFile.mkdirs();

}

//创建文件对象,并用流的形式写在相应的文件夹中

File file = new File(dir, realName);

FileOutputStream fileOutputStream = new FileOutputStream(file);

byte[] buf = new byte[1024];

int len;

while((len=inputStream.read(buf))!=-1) {

fileOutputStream.write(buf, 0, len);

}

fileOutputStream.close();

inputStream.close();

//以下为测试

request.setAttribute("src", request.getContextPath()+"/file/"+realName);

request.setAttribute("filename", realName);

request.getRequestDispatcher("/result.jsp").forward(request, response);

}

}

2、下载图片 fileDownload.java

package cn.yz123123.controller;

import java.io.FileInputStream;

import java.io.IOException;

import java.util.UUID;

import javax.servlet.ServletException;

import javax.servlet.ServletOutputStream;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

@WebServlet(urlPatterns = "/download")

public class fileDownload extends HttpServlet{

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

String filename = req.getParameter("filename");

//获取文件的真实路径

String filePath = req.getServletContext().getRealPath("/file/"+filename);

FileInputStream fileInputStream = new FileInputStream(filePath);

resp.setCharacterEncoding("UTF-8");

resp.setHeader("Content-Disposition","attachment;filename="+UUID.randomUUID()+filename);

ServletOutputStream outputhttp://Stream = resp.getOutputStream();

byte[] buf = new byte[1024];

int len;

while((len=fileInputStream.read(buf))!=-1) {

outputStream.write(buf, 0, len);

}

outputStream.close();

fileInputStream.close();

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

super.doGet(req, resp);

}

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:豆瓣电影api接口数据(豆瓣电影api接口数据库)
下一篇:开放api接口登录模式(开放api接口登录模式是什么)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~