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服务器端口,如果默认端 ...
随机推荐
- go简单写个ini配置文件读取工具
直接上代码: 1 package main 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "reflect" 7 ...
- 关于JWT中RSA数据加密协议在.net中应用
加密协议有哪些 加密协议分为对称加密和非对称加密. 对称加密就是将信息使用一个密钥进行加密,解密时使用同样的密钥,同样的算法进行解密. 非对称加密,又称公开密钥加密,是加密和解密使用不同密钥的算法,广 ...
- 学习笔记-Java面向对象
学习来源: B站[狂神说Java]Java零基础学习视频通俗易懂 static关键字详解 package com.oop.demo07; //static public class Student{ ...
- 10,java双向链表基础代码复现
双向链表总体来说和单链表差别不大,最大的区别就是node结构中多了一个pre指针(变量)指向前一个节点,因为有了之前的单链表基础,双向链表的复现问题少了很多,基本可以不参考老师的代码自主写下来. 1. ...
- 记一次redis集群搭建过程
在搭建前,我们先用vmware创建3台虚拟机,并确保它们相互之间能够ping通. 1. redis源码安装 1.1 编译安装 apt install gcc make wget http://down ...
- uniapp打包h5
1. 找到项目中 manifest.json --- H5 配置---运行时的基础路径, 将路径修改为 相对路径(./ ) 注意: 1.运行的基础路径系统默认打包路径为绝对路径,如不改,打包时找不到对 ...
- EhLib 9安装
EhLib 9安装 安装EhLib: 在Installer文件夹里找到EhLibInstaller.exe,右键以管理员权限运行EhLibInstaller.exe. 按照提示一路安装下来,顺利完成. ...
- 【Java学习Day07】标识符
标识符 Java使用的组成部分的需要名字.类名.变量名以及方法名都被称为标识符 标识符的注意点 所有的标识符都应该以字母(A-Z或者a-z),美元符($).或者下划线(_)开始 首字符之后可以是字母( ...
- 220205_问题解决_python批量创建变量及赋值
220205_问题解决_python批量创建变量及赋值 当想要创建大量 变量名 有规律的变量.并为其有规律的赋值时,可以使用exec() 函数. exec 执行储存在字符串或文件中的 Python 语 ...
- linux 修改PATH 环境变量
[root@localhost ~]# echo $PATH [root@localhost ~]# vim /etc/profile 最后一行加上 export PATH=****/bin:$PAT ...