Java-Maven实现简单的文件上传下载(菜鸟一枚、仅供参考)
1、JSP页面代码实现
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>UploadDown</title>
</head>
<body>
<%
if(null==session.getAttribute("currentUser")){
System.out.print("ddd");
response.sendRedirect("/login");
return;
}else{
System.out.print("yyy");
}
%>
<div align="center">
<form action="${pageContext.request.contextPath }/file/upload"
method="post" enctype="multipart/form-data">
<input type="file" name="file" width="120px">
<input type="submit" value="上传">
</form>
<br>
</div> <div>
<table border="1px" bordercolor="yellow" align="center">
<tr>
<th colspan="5" style="font-size: 25px">目录下可下载文件</th>
</tr>
<tr>
<th width="66px">序号</th>
<th width="150px">文件</th>
<th width="150px">大小</th>
<th width="200px">上传时间</th>
<th width="150px">下载</th>
</tr>
<c:forEach items="${fileList }" var="file" varStatus="s"> <jsp:useBean id="dateValue" class="java.util.Date"/>
<jsp:setProperty name="dateValue" property="time" value="${file.lastModified()}"/> <tr>
<td align="center">${s.count}</td>
<td align="center">${file.getName() }</td>
<td align="center">
<fmt:formatNumber type="number" value="${file.length()/1024.00}" pattern="#0.00"/> KB
</td>
<td align="center">
<fmt:formatDate value="${dateValue}" pattern="yyyy-MM-dd HH:mm:ss"/>
</td>
<td align="center">
<input type="button" value="下载" onclick="window.location.href='${pageContext.request.contextPath }/file/down?filename=${file.getName()}'">
<input type="button" value="删除" onclick="window.location.href='${pageContext.request.contextPath }/file/deleteFile?filename=${file.getName()}'"> <%-- <button>
<a href="${pageContext.request.contextPath }/file/deleteFile?filename=${file.getName()}" style="text-decoration: none">删除</a>
</button> --%>
</td>
</tr>
</c:forEach>
</table>
</div>
</body>
<canvas id="canvas" style="position: fixed;"></canvas>
<script src="./js/js1.js"></script>
<style type="text/css">
body{
background-image: url(./js/bg1.jpeg);
background-size:cover;
}
</style>
</html>
2、上传下载代码实现
package com.chao.controller; import com.chao.utils.PathUtil;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartRequest; @Controller
@RequestMapping({ "file" })
public class UploadDownController {
@RequestMapping
public String toIndex(Model model) throws Exception {
String path = PathUtil.static_root;
File file = new File(path);
List fileList = new ArrayList(); if (file != null) {
if (file.isDirectory()) {
File[] fileArray = file.listFiles();
if ((fileArray != null) && (fileArray.length > 0))
for (File f : fileArray)
fileList.add(f);
} else {
System.out.println("目录不存在!");
}
}
model.addAttribute("fileList", fileList);
model.addAttribute("path", path);
return "index";
} @RequestMapping(value = { "upload" }, method = { org.springframework.web.bind.annotation.RequestMethod.POST })
@ResponseBody
public void upload(HttpServletRequest request, HttpServletResponse response) throws Exception {
MultipartRequest multipartRequest = (MultipartRequest) request;
MultipartFile file = multipartRequest.getFile("file"); if ((file == null) || (file.isEmpty())) {
response.setCharacterEncoding("GB2312");
PrintWriter out = response.getWriter();
out.print("<script>alert('请选择上传文件!'); window.location='/file' </script>");
out.flush();
out.close();
} else {
String fileName = file.getOriginalFilename();
String path = PathUtil.static_root; File dir = new File(path, fileName);
if (!dir.getParentFile().exists()) {
dir.getParentFile().mkdirs(); dir.createNewFile();
} else {
dir.createNewFile();
} file.transferTo(dir);
response.sendRedirect("/file");
}
} @RequestMapping({ "down" })
public void down(String filename, HttpServletRequest request, HttpServletResponse response) throws Exception {
String path = PathUtil.static_root;
String downFileName = new String(filename.getBytes("ISO8859-1"), "utf-8"); String fileName = path + File.separator + downFileName; InputStream bis = new BufferedInputStream(new FileInputStream(new File(fileName)));
response.addHeader("Content-Disposition", "attachment;filename=" + filename);
response.setContentType("multipart/form-data"); BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
int len = 0;
while ((len = bis.read()) != -1) {
out.write(len);
out.flush();
}
out.close();
} @RequestMapping({ "deleteFile" })
public String deleteFile(String filename) throws Exception {
String path = PathUtil.static_root;
filename = new String(filename.getBytes("ISO8859-1"), "utf-8");
String fileName = path + File.separator + filename; File file = new File(fileName);
if ((file.exists()) && (file.isFile()))
file.delete();
else {
return "error";
}
return "redirect:/file";
}
}
3、文件上传环境路径判断
package com.chao.utils; public class PathUtil { public static final String WINDOWS_STATIC = "D:\\uploadfile";// Windows静态文件路径 public static final String LINUX_STATIC = "/uploadfile";// Linux静态文件路径 public static String static_root = null; static {
String system = System.getProperties().getProperty("os.name"); // 获取系统类型
if (system.contains("Windows"))
static_root = WINDOWS_STATIC;
if (system.contains("Linux"))
static_root = LINUX_STATIC;
}
}
4、mysql数据库
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0; -- ----------------------------
-- Table structure for users
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`id` int(0) NOT NULL AUTO_INCREMENT,
`username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; SET FOREIGN_KEY_CHECKS = 1;
Java-Maven实现简单的文件上传下载(菜鸟一枚、仅供参考)的更多相关文章
- Java实现一个简单的文件上传案例
Java实现一个简单的文件上传案例 实现流程: 1.客户端从硬盘读取文件数据到程序中 2.客户端输出流,写出文件到服务端 3.服务端输出流,读取文件数据到服务端中 4.输出流,写出文件数据到服务器硬盘 ...
- Java 客户端操作 FastDFS 实现文件上传下载替换删除
FastDFS 的作者余庆先生已经为我们开发好了 Java 对应的 SDK.这里需要解释一下:作者余庆并没有及时更新最新的 Java SDK 至 Maven 中央仓库,目前中央仓库最新版仍旧是 1.2 ...
- Java实现FTP批量大文件上传下载篇1
本文介绍了在Java中,如何使用Java现有的可用的库来编写FTP客户端代码,并开发成Applet控件,做成基于Web的批量.大文件的上传下载控件.文章在比较了一系列FTP客户库的基础上,就其中一个比 ...
- JAVA中使用FTPClient实现文件上传下载
在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件 ...
- Java语言实现简单FTP软件------>上传下载管理模块的实现(十一)
1.上传本地文件或文件夹到远程FTP服务器端的功能. 当用户在本地文件列表中选择想要上传的文件后,点击上传按钮,将本机上指定的文件上传到FTP服务器当前展现的目录,下图为上传子模块流程图 选择好要上传 ...
- JAVA中使用FTPClient实现文件上传下载实例代码
一.上传文件 原理就不介绍了,大家直接看代码吧 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...
- Java语言实现简单FTP软件------>上传下载队列窗口的实现(七)
1.首先看一下队列窗口的界面 2.看一下上传队列窗口的界面 3.看一下下载队列窗口的界面 4.队列窗口的实现 package com.oyp.ftp.panel.queue; import stati ...
- Java实现FTP与SFTP文件上传下载
添加依赖Jsch-0.1.54.jar <!-- https://mvnrepository.com/artifact/com.jcraft/jsch --> <dependency ...
- java中io流实现文件上传下载
新建io.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" page ...
- java操作FTP,实现文件上传下载删除操作
上传文件到FTP服务器: /** * Description: 向FTP服务器上传文件 * @param url FTP服务器hostname * @param port FTP服务器端口,如果默认端 ...
随机推荐
- React.js 修改文本中数字样式
export function numberToColor(text, color = '#635BFF', size = '12px') { let reg = /(\d+)/g; return t ...
- Windows 批量测试 ip:port 是否通畅
使用 telnet + cmd 脚本处理: @echo off start cmd /k "telnet 10.2.3.29 3000" start cmd /k "te ...
- Windows10 WSL开启SSH登录
1.wsl 安装ssh服务(使用的是ubuntu)sudo apt install openssh-server 2.修改配置文件sudo vim /etc/ssh/sshd_config关键的几处修 ...
- linux run/media/wang/centos_磁盘爆满
在使用iso安装了linux系统后,会有个 /run/media/wang/CentOS 7 x86_64 无法删除,这个是我们安装程序时的安装驱动, 登陆用户后将他卸载就可
- 超强大的PS汉化插件Specs 一键尺寸标注
尺寸标注是大多数设计师必不可少的细节工作,特别是在一些特定的设计图中,标注至关重要.大部分设计大大都直接用CAD标注,其实借助插件,PS也是完全可以搞定常见的尺寸标注的. 插件介绍 这是一款超级强大的 ...
- Spring Web MVC注解
@RequestMapping @RequestMapping注解的主要用途是将Web请求与请求处理类中的方法进行映射. Spring MVC和Spring WebFlux都通过RquestM ...
- zabbix5.2+mysql+ubuntu20.4
服务端 0.初始化机器 1.mysql安装 # apt-get install mysql-server # apt update 根据提示一步一步确认,要求输入的密码是创建管理员的密码 2.安装za ...
- 百题计划-4 codeforces 652 div2 D. TediousLee 找规律
https://codeforces.com/contest/1369/problem/D n<=2e6,所以只要找递推式就可以了,不需要找快速幂 /** */ #include<bits ...
- c++基础: uint8_t uint16_t uint32_t uint64_t size_t ssize_t数据类型
https://blog.csdn.net/lzx_bupt/article/details/7066577 在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等.咋一看,好像是个 ...
- 【小记】golang_map
map 前言:map 几个操作实现有点复杂,即便之前看懂了没过多久也就忘了,这里简单做下记录.为了便于记忆,将 mapassign 的全过程以流程图的方式展示,其他省略 mapassign 在流程图中 ...