1.前台上传:

 <input type="file" name="file"  id="file">

2.后台的接收与处理:

        String uuid = UUID.randomUUID().toString();
//取得文件
MultipartFile file = form.getFile();
//获取存放文件的路径
File fileDir = UploadUtils.getImgDirFile();
try {
//构建新文件,包含路径+文件名
File newFile = new File(fileDir.getAbsolutePath(), uuid);
//保存文件
file.transferTo(newFile);
} catch (IOException e) {
e.printStackTrace();
}

这里放一下我上面构建存放文件路径的工具类 UploadUtils :

public class UploadUtils {

   /* // 项目根路径下的目录  -- SpringBoot static 目录相当于是根路径下(SpringBoot 默认)
public final static String IMG_PATH_PREFIX = "static/upload/imgs";*/ public static File getImgDirFile(){ // 构建上传文件的存放 "文件夹" 路径
String fileDirPath = new String("C:\\webImg");
File fileDir = new File(fileDirPath);
if(!fileDir.exists()){
// 递归生成文件夹
fileDir.mkdirs();
}
return fileDir;
}
}

保存图片后的文件夹:

3.做完保存,接下来就得让它在前台显示出来,这里使用的容器是bootstrap-table,代码如下:

<table id="gamesTable" data-bind="bootstrapTable:$root" style="table-layout: fixed;">
<thead>
<tr>
<th data-checkbox="true"></th>
<th data-field="img" data-formatter="showImg">概念图</th>
<th data-field="name">名称</th>
<th data-field="dev">开发商</th>
<th data-field="shelfTime">发行日期</th>
<th data-field="price">价格</th>
</tr>
</thead>
</table>

JS处理data-formatter:

 function showImg(value){
var html="<img src='games/dw?uuid="+value+"' width='100%' />";
return html;
}

后台的下载方法:

    public void dw(String uuid,HttpServletRequest request, HttpServletResponse response) {
Games fileentity = dao.findByImg(uuid);
if(fileentity==null) { }else {
//文件名称
String filename = "sss.jpg";
filename = getStr(request, filename);
//下载文件的路径(即保存文件的路径
String filePath="C:\\webImg";
File file = new File(filePath, uuid);
if(file.exists()) {
FileInputStream fis;
try {
fis = new FileInputStream(file);
response.setContentType("application/x-msdownload");
response.addHeader("Content-Disposition", "attachment; filename=" + filename );
ServletOutputStream out = response.getOutputStream();
byte[] buf=new byte[2048];
int n=0;
while((n=fis.read(buf))!=-1){
out.write(buf, 0, n);
}
fis.close();
out.flush();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
} }

附上处理文件名乱码的方法:

    //处理文件名乱码的问题
private String getStr(HttpServletRequest request, String fileName) {
String downloadFileName = null;
//仅提供了部分代码,因为我们已经明确问题的所在,知道修改那一部分了,(代码中downloadFileName 即代表 *=utf-8'zh_cn'文件名.xx部分)
String agent = request.getHeader("USER-AGENT");
try {
if(agent != null && agent.toLowerCase().indexOf("firefox") > 0){
//downloadFileName = "=?UTF-8?B?" + (new String(Base64Utils.encode(fileName.getBytes("UTF-8")))) + "?=";
//设置字符集
downloadFileName = "=?UTF-8?B?" + Base64Utils.encodeToString(fileName.getBytes("UTF-8")) + "?=";
}else{
downloadFileName = java.net.URLEncoder.encode(fileName, "UTF-8");
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return downloadFileName;
}

以上。

最新文章

  1. Stream与byte[]与Image与string
  2. 370. Range Addition
  3. [No000066]python各种类型转换-int,str,char,float,ord,hex,oct等
  4. Tomcat 6 JNDI数据源详解
  5. 使用 gulp 搭建前端环境入门篇(转载)
  6. Android—SQLITE数据库的设计和升降级
  7. ASP.NET发布网站遇到的几个问题
  8. 生成ssl证书
  9. EOF的一点注记
  10. Wpf自定义路由事件
  11. python成长之路第三篇(2)_正则表达式
  12. 利用python进行数据分析之绘图和可视化
  13. asp 随机生成字符
  14. VUE2.0实现购物车和地址选配功能学习第四节
  15. java oop 集合框架
  16. 未能加载文件或程序集“SuperMap.Mapping, Version=7.0.0.0, Culture=neutral, PublicKeyToken=0635c574ea890381”或它的某一个依赖项。试图加载格式不正确的程序。
  17. Android-简单总结一下图片压缩
  18. .net Kafka.Client多个Consumer Group对Topic消费不能完全覆盖研究总结(二)
  19. assert BOOST_ASSERT的坑
  20. vuejs服务端渲染更好的SEO,SSR完全指南Nuxt.js静态站生成器

热门文章

  1. pandas 学习 第8篇:Index 对象 - (创建、转换、排序)
  2. Think in Speed (关于速度的一点思考)
  3. 反射实体类拼接SQL语句
  4. Netty与RPC
  5. Docker关于镜像、容器的基本命令
  6. SAP MM MB5L 报表里的差异金额如何调整?
  7. [b0041] python 归纳 (二六)_多进程数据共享和同步_事件Event
  8. [b0020] python 归纳 (六)_模块变量作用域
  9. mysql综合性练习
  10. DOS(磁盘操作系统)基本命令-思维导图