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. EMA

    目录 源 设置 结果 源 Exponential moving average (EMA) 是一个非常有用的trick, 起到加速训练的作用. 近来发现, 该技巧还可以用于提高网络鲁棒性(约1% ~ ...

  2. KKT (LICQ)

    目录 基本内容 LICQ 假设 KKT 定理 KKT定理的证明 引理A Farkas 引理 推论 KKT定理的证明 H. E. Krogstad, TMA 4180 Optimeringsteori ...

  3. [opencv]常用阵列操作函数总结

    /*=========================================================================*/ // 阵列操作 /*============ ...

  4. IM2605说明书| InmicroIM2605|IM2605芯片

    IM2605描述 IM2605集成了一个同步4开关Buck-Boost变换器,在输入电压小于或大于输出电压时保持输出电压调节.当输入电压足够大于输出电压时,它作为Buck变换器工作,并随着输入电压接近 ...

  5. 数据可视化 gojs 简单使用介绍

    目录 1. gojs 简介 2. gojs 应用场景 3. 为什么选用 gojs: 4. gojs 上手指南 5. 小技巧(非常实用哦) 6. 实践:实现节点分组关系可视化交互图 最后 本文是关于如何 ...

  6. docker学习:docker镜像

    镜像是什么 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码.运行时.库.环境变量和配置文件. UnionFS(联合文件系 ...

  7. Hexo博客部署到腾讯云服务器全过程(Nginx,证书,HTTPS),你要的这里都有

    背景 说来也惭愧,博客已经搭建很久了,一直免费的部署在 Coding 和 Github Pages 上,前者迁移到腾讯云 Serverless,导致原有的配置始终有问题,没时间仔细研究,刚好腾讯服务器 ...

  8. hive 之 查看某库一共有多少张表

    思路一: show出所有表,然后wc -l hive -e" use database_name; show tables; "|wc -l 思路二: 1.show出当前库所有的表 ...

  9. Python2 和 Python3 共存于 Centos7

    一.解决Python2 pip问题 centos7自带的是Python2,但是并没有安装pip,我们需要自行安装 包名为 python-pip # yum install epel-release - ...

  10. jmu-ds-舞伴问题

    假设在周末舞会上,男士和女士们分别进入舞厅,各自排成一队.跳舞开始,依次从男队和女队队头各出一人配成舞伴,若两队初始人数不同,则较长那一队未配对者等待下一轮舞曲.现要求写一算法模拟上述舞伴配对问题. ...