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 ...
随机推荐
- 【JAVA今法修真】 第七章 洞天风云起,索引混乱平
您好,我是南橘,万法仙门的掌门,刚刚从九州世界穿越到地球,因为时空乱流的影响导致我的法力全失,现在不得不通过这个平台向广大修真天才们借去力量.你们的每一个点赞,每一个关注都是让我回到九州世界的助力,兄 ...
- MyEclipse编写jsp很卡的修改方法 (转载)
原文来源 Post IP : 180.156.210.* 1,改默认编辑模式就可以了.将默认编辑器由"myeclipse visual jsp designer" ...
- POJ 3278:The merchant(LCA&DP)
The merchant Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 6864 Accepted: 2375 Desc ...
- CSS3的nth-child() 选择器,表格奇偶行变色
nth-child() 应用背景 CSS3的nth-child() 选择器,我之前很少用,在做表格偶数行变色的时候,我通常在绑定的时候,做一个js判断,来加一个css,从而使表格偶数行和奇数行颜色不一 ...
- Elasticsearch单机安装Version7.10.1
1.说明 Elasticsearch单机安装, 基于Elasticsearch的7.10.1版本, 在Linux上安装Elasticsearch单机, 使用安装包elasticsearch-7.10. ...
- 前端必备,5大mock省时提效小tips,用了提前下班一小时
一.一些为难前端的业务场景 在我的工作经历里,需要等待后端童鞋配合我的情形大概有以下几种: a.我们跟外部有项目合作,需要调用到第三方接口. 一般这种情况下,商务那边谈合同,走流程,等第三方审核, ...
- haproxy常用配置
haproxy 理论 它可以反向代理http/tcp协议,七层和四层的负载均衡解决方案 七层的负载解决方案是因为他们支持高级特性,工作在用户空间,请求从用户空间转换到内核空间是非常浪费硬件资源的. h ...
- hisql 与sqlsugar,freesql 数据插入性能测试
hisql与目前比较流行的ORM框架性能测试对比 hisql 一直定位为新一代的ORM框架 为低代码开发而生 测试数据数据库为sqlserver数据库 测试源码地址hisql与sqlsugar fre ...
- String 既然能做性能调优,我直呼内行
码哥,String 还能优化啥?你是不是框我? 莫慌,今天给大家见识一下不一样的 String,从根上拿捏直达 G 点. 并且码哥分享一个例子:通过性能调优我们能实现百兆内存轻松存储几十 G 数据. ...
- Appium之xpath定位详解
前面也说过appium也是以webdriver为基的,对于元素的定位也基本一致,只是增加一些更适合移动平台的独特方式,下面将着重介绍xpath方法,这应该是UI层元素定位最强大的方法啦! 以淘宝app ...