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 表单上传文件和下载?的更多相关文章

  1. java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例

    java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例HttpClient 测试类,提供get post方法实例 package com.zdz.httpclient; i ...

  2. 使用form表单上传文件

    在使用form表单上传文件时候,input[type='file']是必然会用的,其中有一些小坑需要避免. 1.form的 enctype="multipart/form-data" ...

  3. django 基于form表单上传文件和基于ajax上传文件

    一.基于form表单上传文件 1.html里是有一个input type="file" 和 ‘submit’的标签 2.vies.py def fileupload(request ...

  4. Express下使用formidable实现POST表单上传文件并保存

    Express下使用formidable实现POST表单上传文件并保存 在上一篇文章中使用formidable实现了上传文件,但没将它保存下来. 一开始,我也以为是只得到了文件的相关信息,需要用fs. ...

  5. 巨蟒python全栈开发django11:ajax&&form表单上传文件contentType

    回顾: 什么是异步? 可以开出一个线程,我发出请求,不用等待返回,可以做其他事情. 什么是同步? 同步就是,我发送出了一个请求,需要等待返回给我信息,我才可以操作其他事情. 局部刷新是什么? 通过jq ...

  6. vue form表单上传文件

    <script src="https://cdn.staticfile.org/vue-resource/1.5.1/vue-resource.min.js">< ...

  7. JsonResponse类的使用、form表单上传文件补充、CBV和FBV、HTML的模板语法之传值与过滤器

    昨日内容回顾 Django请求生命周期 # 1.浏览器发起请求 到达Django的socket服务端(web服务网关接口) 01 wsgiref 02 uwsgi + nginx 03 WSGI协议 ...

  8. Linux 基础命令-CURL 表单上传文件

    CURL -F, --form <name=content> (HTTP) This lets curl emulate a filled-in form in which a user ...

  9. 一个ajax实现表单上传文件的神器 formdata

    通过传统的form表单提交的方式上传文件: $.ajax({ url : "http://localhost:8080/STS/rest/user", type : "P ...

随机推荐

  1. 【LeetCode】795. Number of Subarrays with Bounded Maximum 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 暴力搜索+剪枝 线性遍历 日期 题目地址: ...

  2. 1269 - Consecutive Sum

    1269 - Consecutive Sum    PDF (English) Statistics Forum Time Limit: 3 second(s) Memory Limit: 64 MB ...

  3. Leapin' Lizards(hdu 2732)

    Leapin' Lizards Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  4. vue.js是什么?它的优点有哪些?

    Vue.js 是一套响应式的 JavaScript 开发库.其他前端开发库也有很多,比如 jQuery.ExtJS.Angular 等. Vue.js 自问世以来所受关注度不断提高,在现在的市场上,V ...

  5. 【漏洞复现】ThinkAdmin v5和v6 未授权列目录任意文件读取(CVE-2020-25540)

    ThinkAdmin v5和v6 未授权列目录/任意文件读取(CVE-2020-25540) 漏洞简介 ThinkAdmin是一套基于ThinkPHP框架的通用后台管理系统.ThinkAdmin v6 ...

  6. VS Code 如何设置大小写转换快捷键

    一般情况下,快捷键如下: 转换为大写:Ctrl+Shift+u 转换为小写:Ctrl+Shift+l 如果不行的话,需要单独进行设置,步骤如下: 1.点击[文件]-[首选项]-[键盘快捷方式]菜单: ...

  7. Lombok的利弊

    1.介绍 Lombok是一个可以大量减少代码的工具, 通过Pluggable Annotation Processing API的方式解析注解, 在编译期为class文件注入getter,setter ...

  8. frontend-maven-plugin插件问题解决

    1.插件介绍 frontend-maven-plugin为项目本地下载/安装Node和NPM,运行npm install命令 . 它适用于Windows,OS X和Linux. 这个插件也可以下载No ...

  9. Nginx入门--从核心配置与动静分离开始

    写在前面 优化我们项目,服务器部署,不仅仅可以是分布式,Nginx一样可以通过动静分离,负载均衡来减轻我们服务器的压力.Nginx的知识链,学习周期相对比较长,博主也是刚刚入门,这篇就先从实现基础的动 ...

  10. 本地Java大数据环境基础配置(Maven)

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6812623309138559500/ 创建项目 准备pom.xml文件配置(附在文档最后) 在下载jar过程中极其 ...