1.前言

在使用elementui的upload组件时,我一直无法做到上传的图片和其他数据一起提交。单纯的上传文件,java的存储图片的方式也有局限性。

我知道的后端保存图片有两种方式:一种是直接存储到数据库中(base65和blob都能做到),一种是存储在服务器上的一个文件夹,数据库保存图片地址.

开始我选择了base64 但是mysql貌似不允许这么长的存储长度(没有百度直接否掉了),后面就使用存储在服务器上。

2.代码

流程是,前端选择好图片并且填充好想要填写的数据,点提交就提交到后台进行上传和其他操作。图片名称我在前端进行修改,因为我貌似没有在 MultipartRequest 类中发现修改    图片名称的方法  api地址: http://www.servlets.com/cos/javadoc/com/oreilly/servlet/MultipartRequest.html

项目依赖cos.jar  百度云下载地址: 链接:https://pan.baidu.com/s/1NLxxo9JTBp93A1mZ7hIWaA 密码:gf5y

前端代码:

点击上传

只能上传jpg/png文件,且不超过2MB

提交

export default {

data() {

return {

uploadFile: ""

};

},

methods: {

uploadSectionFile(param) {

let fileObj = param.file;

const isLt2M = fileObj.size / 1024 / 1024 < 2;

if (!isLt2M) {

this.$message.error("上传头像图片大小不能超过 2MB!");

return;

}

if (fileObj.type === "image/jpeg") {

this.uploadFile = new File([fileObj], new Date().getTime() + ".jpg", {

type: "image/jpeg"

});

} else if (fileObj.type === "image/png") {

this.uploadFile = new File([fileObj], new Date().getTime() + ".png", {

type: "image/png"

});

} else {

this.$message.error("只能上传jpg/png文件");

return;

}

},

upload() {

var param = new FormData(); // FormData 对象

param.append("file", this.uploadFile); // 文件对象

param.append("name", "ziguiyu"); // 其他参数

this.$axios({

method: "post",

url: "/GradeSystem/upload.do",

data: param

})

.then(response => {

this.$message({

message: '上传成功',

type: 'success'

});

})

.catch(error => {

this.$message.error("上传失败,请稍后重试");

});

}

}

};

后端代码

package org.huangxb.course.service;

import java.io.File;

import java.io.IOException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Enumeration;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.huangxb.course.util.makeDirectory;

import com.oreilly.servlet.MultipartRequest;

import com.oreilly.servlet.multipart.DefaultFileRenamePolicy;

public class UploadImg extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

// 设置大小限制(单位:字节)

final int permitedSize = 2097152;

try {

String type = "";

String name = "";

String originalFilename = "";

String filename = "";

//上传目录

Calendar cal = Calendar.getInstance();

String uploadDate = new SimpleDateFormat( "yyyyMMdd").format(cal.getTime());//以日期为文件夹名称

String strDirectory = "images/"+uploadDate;

String uploadPath = request.getSession().getServletContext().getRealPath("/") + strDirectory;

makeDirectory.mkDirectory(uploadPath);

// 获取句柄

MultipartRequest multipartRequest = new MultipartRequest(request, uploadPath,

permitedSize, "ISO-8859-1", new DefaultFileRenamePolicy());

// 取得文件

Enumeration files = multipartRequest.getFileNames();

// 取得文件详细信息

while (files.hasMoreElements()) {

name = (String)files.nextElement();

type = multipartRequest.getContentType(name);

filename = multipartRequest.getFilesystemName(name);

originalFilename = multipartRequest.getOriginalFileName(name);

File currentFile = multipartRequest.getFile(name);

}

// 取得其它非文件字段

Enumeration params = multipartRequest.getParameterNames();

while (params.hasMoreElements()) {

String param = (String)params.nextElement();

String value = multipartRequest.getParameter(param);

}

} catch (Exception exception) {

response.sendError(response.SC_METHOD_NOT_ALLOWED);

} finally {

}

}

}

package org.huangxb.course.util;

import java.io.File;

public class makeDirectory {//创建目录的类

public static boolean mkDirectory(String path) {

File file = null;

try {

file = new File(path);

if (!file.exists()) {

return file.mkdirs();

}

else{

return false;

}

} catch (Exception e) {

} finally {

file = null;

}

return false;

}

}

在测试时,发现upload的进度条没有了,由于不是很需要就没有去研究。小白进阶,有童鞋发现问题请指正。

java 存储png文件_vue图片上传及java存储图片(亲测可用)相关推荐

  1. themyleaf 图片上传_javaEE --springboot #实现图片上传和回显 #单文件上传 #多文件上传 #ajax异步文件上传 (非常详细,从创建项目开始)...

    实现文件上传和回显 1.新建一个SpringBoot项目,选择 Spring Web 和 thymeleaf 依赖 .pow.xml文件下的依赖如下 2.根据下图,创建如下文件 3.直接上代码 配置文 ...

  2. Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一)

    图片或者文件上传相信大家在开发中应该都会用到吧,有的时候还要对图片生成缩略图.那么如何在Asp.Net Core Web Api实现图片上传存储以及生成缩略图呢?今天我就使用MongoDB作为图片存储 ...

  3. java窗体广告墙(图片上传)java广告系统

    java窗体广告墙(图片上传)java广告系统 public Swingtest002() {// 设置标题setTitle("请登陆");// 绝对布局setLayout(nul ...

  4. php 更改图片后缀名,PHP在图片上传时如何改变图片后缀为jpg

    PHP在图片上传时改变图片后缀为jpg的方法:首先获取上传的图片后缀,并获取图片在电脑上的临时存储位置:然后获取临时存储文件的后缀:最后实现后缀转换,代码为[case 'im{ / S # p |ag ...

  5. **微信小程序图片上传+后台PHP修改图片名称**

    微信小程序图片上传+后台PHP修改图片名称 前端代码:比较随意 <view class="weui-uploader"><view class="img ...

  6. jsp图片上传提交前,图片显示在页面上

    <divclass="upload_box"> <b>上传图片</b> <inputtype="file"name=& ...

  7. antd 图片上传遇到的坑----图片回显(Upload)

    antd 图片上传遇到的坑----图片回显(Upload) 最近又被安排了一个前端的项目,遇到了一个图片上传的问题,用的是antd的Upload组件,在这遇到的问题和大家分享一下,下网可以帮到需要的人 ...

  8. 最新图片在线加水印网页源码+亲测可用

    正文: 最新图片在线加水印网页源码+亲测可用,专门用于给图片加水印打码的工具,完全基于浏览器本地API,无任何网络请求. 程序: wwuwe.lanzouq.com/i1W4508nyhjc 图片:

  9. 微信js-sdk图片上传下载——java完整流程

    最近做的一个项目刚好用到微信js-sdk的图片上传接口,在这里做一下总结. 在这里能知道使用js api的基本配置https://mp.weixin.qq.com/wiki?t=resource/re ...

  10. java多图片上传json_[Java教程]SpringMVC框架五:图片上传与JSON交互

    [Java教程]SpringMVC框架五:图片上传与JSON交互 0 2018-08-07 22:00:42 在正式图片上传之前,先处理一个细节问题: 每一次发布项目,Tomcat都会重新解压war包 ...

最新文章

  1. Matlab | 空间域水印技术:LSB(Least Significant Bit):计算峰值信噪比PSNR(matlab源代码)
  2. 适合做手机铃声的81首歌_“想下载这首歌作为你的手机铃声吗?”
  3. 记忆化搜索,FatMouse and Cheese
  4. csu 1008 - Horcrux
  5. 首个视觉-语言预训练综述来了!
  6. 统一沟通_边缘安装及配置之十七_(Windows Server 2008 R2 SP1英文版)
  7. 报错:error LNK2001:unresolved external symbol _WinMain@16
  8. 物联网应用和事件驱动计算重塑云服务
  9. python简单代码-python实现顺序表的简单代码
  10. nodepad代码格式复制到word发布到博客
  11. 如何用python写程序设置当前打印机为默认打印机,从Python打印到标准打印机?
  12. python模态窗口_python webdriver 对模态窗口的处理
  13. 【雕爷学编程】Arduino动手做(94)---L298N电机驱动板
  14. CT计算机组成及其特点,浅析CT图像的特点及常用扫描方式
  15. word文档打破折号
  16. overriding managed version警告
  17. 极客日报:微信自动抢红包软件被判赔 475 万;日本科学家打破网速全球纪录;JavaScript蝉联最受欢迎编程语言
  18. vue项目中引入.xlsx文件
  19. seaborn做图技巧
  20. 程序设计-在校整理-06 最常公共子序列与子串+2048小游戏+KNN简单实例

热门文章

  1. CentOS_7 安装MySql5.7
  2. 解决python连接mysql,UTF-8乱码问题
  3. 安装TPCC-MySQL报错
  4. [转]Android 之 Window、WindowManager 与窗口管理
  5. Leetcode | Implement strStr()
  6. 利用Visio 2007图形化项目进度和项目跟踪
  7. I must be strong and carry on
  8. postgresql 怎么读_大数据采集和抽取怎么做?这篇文章终于说明白了!
  9. Mybatis源码阅读(四):核心接口4.2——Executor(上)
  10. 深入理解Scala的隐式转换系统