from 表单上传文件和下载?
from表单上传单个文件的方法。 分为三个部分,简单演示。
一部分 表单上传文件
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2019/8/9
Time: 9:41
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<%--
1.from标签中 指定路径 post提交
2.enctype属性:上传文件类型的数据
3.multipart/form-data 多媒体表单数据的格式
4.type file 浏览本地文件
--%>
<body>
<form method="post" action="../shang" enctype="multipart/form-data">
<div> 文件<input type="file" name="file01"> </div>
<div> <input type="submit" value="提交"> </div>
</form>
</body>
</html>
二部分 后台控制器
package com.aaa.controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date; @Controller
public class DemoShangChuang {
@RequestMapping("/demo")
public String upload(@RequestParam("file12") MultipartFile file,Model model, HttpServletRequest request) throws IOException {
//先判断 上传的文件是否为空!
if (!file.isEmpty()) { //1.明确目标位置 是一个绝对路径 将文件传送到的地方?
String path = request.getSession().getServletContext().getRealPath("/static/upload"); //2. 2.1获取原始的文件名 2.2也可以自定义文件名(根据时间戳)
String fileName = file.getOriginalFilename(); //9.新的文件名? 文件名+文件后缀
//新的文件名的 名字 通过日期函数 生成
//只需要 旧的文件名的后缀。 . 以后的文件
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String prefix = simpleDateFormat.format(new Date()); String suffix = fileName.substring(fileName.lastIndexOf("."));
String newfilename = prefix + suffix;
// System.out.println("新的文件名"+newfilename); //3.目标文件的对象。
File file1 = new File(path + "/" + newfilename); //4.获取父级文件,判断是否存在 没有就创建目录
if (!file1.getParentFile().exists()) {
file1.mkdirs();
} //8.目标文件存在 就不要让他存在 就是说 不存在的文件 才让他上传。 注意 用了时间戳以后,同一文件名会不断修改,可以重复上传。
if (!file1.exists()) {
//5.传输文件的方法
file.transferTo(file1); //6.将数据封装到model里面 然后再ok.jsp 通过 “上传文件:${file}” 知道上传的是那个文件
model.addAttribute("file", newfilename);
}
} else { // 上传的是空文件 提示用户!
model.addAttribute("file", "上传文件为空");
} //7.跳转到指定的页面。
return "view/ok"; }
}
三、jsp 接收部分
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2019/8/5
Time: 16:25
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>接收文件</title>
</head>
<body>
<%-- 在jsp页面接收 我们上传的文件名。 --%>
上传文件:${file} <%--将文件的路径放在这里 就可以将上传的文件下载。 --%>
<a href="http://localhost:8848/zxf/static/upload/8.png">下载8.png</a>
</body>
</html>
from 表单上传文件和下载?的更多相关文章
- java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例
java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例HttpClient 测试类,提供get post方法实例 package com.zdz.httpclient; i ...
- 使用form表单上传文件
在使用form表单上传文件时候,input[type='file']是必然会用的,其中有一些小坑需要避免. 1.form的 enctype="multipart/form-data" ...
- django 基于form表单上传文件和基于ajax上传文件
一.基于form表单上传文件 1.html里是有一个input type="file" 和 ‘submit’的标签 2.vies.py def fileupload(request ...
- Express下使用formidable实现POST表单上传文件并保存
Express下使用formidable实现POST表单上传文件并保存 在上一篇文章中使用formidable实现了上传文件,但没将它保存下来. 一开始,我也以为是只得到了文件的相关信息,需要用fs. ...
- 巨蟒python全栈开发django11:ajax&&form表单上传文件contentType
回顾: 什么是异步? 可以开出一个线程,我发出请求,不用等待返回,可以做其他事情. 什么是同步? 同步就是,我发送出了一个请求,需要等待返回给我信息,我才可以操作其他事情. 局部刷新是什么? 通过jq ...
- vue form表单上传文件
<script src="https://cdn.staticfile.org/vue-resource/1.5.1/vue-resource.min.js">< ...
- JsonResponse类的使用、form表单上传文件补充、CBV和FBV、HTML的模板语法之传值与过滤器
昨日内容回顾 Django请求生命周期 # 1.浏览器发起请求 到达Django的socket服务端(web服务网关接口) 01 wsgiref 02 uwsgi + nginx 03 WSGI协议 ...
- Linux 基础命令-CURL 表单上传文件
CURL -F, --form <name=content> (HTTP) This lets curl emulate a filled-in form in which a user ...
- 一个ajax实现表单上传文件的神器 formdata
通过传统的form表单提交的方式上传文件: $.ajax({ url : "http://localhost:8080/STS/rest/user", type : "P ...
随机推荐
- 【LeetCode】795. Number of Subarrays with Bounded Maximum 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 暴力搜索+剪枝 线性遍历 日期 题目地址: ...
- 1269 - Consecutive Sum
1269 - Consecutive Sum PDF (English) Statistics Forum Time Limit: 3 second(s) Memory Limit: 64 MB ...
- Leapin' Lizards(hdu 2732)
Leapin' Lizards Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- vue.js是什么?它的优点有哪些?
Vue.js 是一套响应式的 JavaScript 开发库.其他前端开发库也有很多,比如 jQuery.ExtJS.Angular 等. Vue.js 自问世以来所受关注度不断提高,在现在的市场上,V ...
- 【漏洞复现】ThinkAdmin v5和v6 未授权列目录任意文件读取(CVE-2020-25540)
ThinkAdmin v5和v6 未授权列目录/任意文件读取(CVE-2020-25540) 漏洞简介 ThinkAdmin是一套基于ThinkPHP框架的通用后台管理系统.ThinkAdmin v6 ...
- VS Code 如何设置大小写转换快捷键
一般情况下,快捷键如下: 转换为大写:Ctrl+Shift+u 转换为小写:Ctrl+Shift+l 如果不行的话,需要单独进行设置,步骤如下: 1.点击[文件]-[首选项]-[键盘快捷方式]菜单: ...
- Lombok的利弊
1.介绍 Lombok是一个可以大量减少代码的工具, 通过Pluggable Annotation Processing API的方式解析注解, 在编译期为class文件注入getter,setter ...
- frontend-maven-plugin插件问题解决
1.插件介绍 frontend-maven-plugin为项目本地下载/安装Node和NPM,运行npm install命令 . 它适用于Windows,OS X和Linux. 这个插件也可以下载No ...
- Nginx入门--从核心配置与动静分离开始
写在前面 优化我们项目,服务器部署,不仅仅可以是分布式,Nginx一样可以通过动静分离,负载均衡来减轻我们服务器的压力.Nginx的知识链,学习周期相对比较长,博主也是刚刚入门,这篇就先从实现基础的动 ...
- 本地Java大数据环境基础配置(Maven)
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6812623309138559500/ 创建项目 准备pom.xml文件配置(附在文档最后) 在下载jar过程中极其 ...