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

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的进度条没有了,由于不是很需要就没有去研究。小白进阶,有童鞋发现问题请指正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547758.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

看视频学编程之最最基础的基础(1)

------- Windows Phone 7手机开发、.Net培训、期待与您交流&#xff01; ------- C#语法&#xff1a; 1、从上到下一条条的依次执行。过去的就让他过去吧&#xff0c;不会返回头执行&#xff1a;int i13;int i25;int i3i1i2;i19;。大小写敏感。String和string 都行是另外一个问…

苹果系统使用之输入法的呈现与设置问题

新装的系统&#xff0c;总是纠结的出现各种问题。今天解决的就是装了Mac OS X 10.6&#xff08;苹果系统&#xff09;之后&#xff0c;输入法找不到&#xff0c;用快捷不能设置的问题。 刚开始使用mac os x 系统&#xff0c;其实说用也谈不上&#xff0c;因为本人是使用公司的电…

利用Seafile搭建私有文件同步云盘

安装 Seafile 所需环境 如果你的CVM系统为Ububtu系统&#xff0c;请查看Ububtu系统安装教程&#xff0c;如果系统为CentOS&#xff0c;请参考CentOS操作系统安装教程&#xff0c;本文以Ubuntu Server 16.04.1 LTS为例。 Ubuntu系统 这里我们使用apt包管理器进行安装&#xf…

java更改用户邮箱_git修改user.name 和user.email

今天刚刚入门了下git&#xff0c;&#xff0c;然后初始化的时候将用户名弄错了。。。就很气啊。然后网上找了半天都找不出一个可靠的修改全局用户名和邮箱的方法。。最后还是自己摸索出来了。。其实也很简单。首先进入git bash0&#xff1a;输入$ git config --list可以查看配置…

js堆栈溢出的问题

js是最令程序员头疼的问题了&#xff0c;不是语法也不是使用头疼&#xff0c;而是调试头疼&#xff0c;虽然有很方便的各种各样的调试工具&#xff0c;但经管这样有时候一个疏忽的小问题&#xff0c;会导致各种各样的奇怪问题的出现&#xff0c;今天笔者的同事就出现了这样的问…

halcon 17 cuda cudnn 深度学习环境搭建

如果你想安装halcon17&#xff0c;那么很简单&#xff0c;硬盘剩余空间2G,内存超过256M&#xff0c;操作系统win7以上即可。 但显然我们的要求不仅如此&#xff0c;因为我们期待已久的深度学习功能。 详细要求见下表 必备环境&#xff1a;电脑必须要有 NVIDIA 独立显卡&#x…

给java程序员网址_程序员常用网址,必须收藏

金山快盘 http://www.kuaipan.cn/login/ yijianfeng_vip163.com115 网盘 http://my.115.com/ yijianfeng_vip163.com.六间房图片外链刷流量工具-软件 http://www.safe-120.com/sites/yijianfeng/sh…

Format Currency Sample

2019独角兽企业重金招聘Python工程师标准>>> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"&…

jQuery.html()方法ie下不能设置html代码的问题

jQuery一般来说还是很好用的&#xff0c;但有时候它也会有些问题的&#xff0c;比如jQuery的html()方法设置html代码&#xff0c;在一种情况下&#xff0c;ie6、ie7、ie8 下是不能设置html代码的。本文说的问题只针对ie8&#xff08;包括ie8&#xff09;以下的浏览器。 1.什么情…

深度学习-服务端训练+android客户端物体识别实战(caffe入门教程+mobilenet+ncnn+android)

文章目录 背景 物体识别简介 自动驾驶 淘宝京东使用物体识别技术公司业务需求 深度学习简介 深度学习的位置 深度学习概念深度学习优势 深度学习基础知识 感知机 激活函数多层感知机卷积神经网络 卷积层 * 池化层 模型训练 前向传播 * 反向传播与参数优化 深度学习服务端框…

java数组怎么倒循环_java – 用于数组倒计时的反向循环

我收到错误..Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10at Reverse.main(Reverse.java:20).语法没有错,所以我不确定为什么编译时会出错&#xff1f;public class Reverse {public static void main(String [] args){int i, j;System…

解压zip,解决中文乱码

Project p new Project(); Expand e new Expand(); e.setProject(p); e.setSrc(file); e.setOverwrite(false); e.setDest(new File(savepath)); /* * * ant下的zip工具默认压缩编码为UTF-8编码&#xff0c; …

二维码的生成(可设置大小)以及插件下载地址

本文写的二维码生成是基于jQuery和jquery.qrcode.min.js插件的&#xff0c;本文将介绍两种方法和方式&#xff0c;仅供朋友选择和取舍。本文最下面附有插件的下载地址&#xff01; 方式1&#xff1a; 基于jquery.qrcode.min.js插件生成&#xff0c;代码如下&#xff1a; <h…

java+包装类,装箱和拆箱_Java包装类,装箱和拆箱详解

下面要给大家讲到的就是Java内置包装类方面的知识&#xff0c;这章主要会讲到Java包装类装箱和拆箱方面的知识&#xff0c;一起来了解一下。Java为每种基本数据类型分别设计了对应的类&#xff0c;这就被叫做是包装类(WrapperClasses)&#xff0c;当然&#xff0c;也有的地方叫…

AI换声,只需5秒音源,这个网络就能实时“克隆”你的声音

本文中&#xff0c;Google 团队提出了一种文本语音合成&#xff08;text to speech&#xff09;神经系统&#xff0c;能通过少量样本学习到多个不同说话者&#xff08;speaker&#xff09;的语音特征&#xff0c;并合成他们的讲话音频。此外&#xff0c;对于训练时网络没有接触…

Using JSON for data transfer

为什么80%的码农都做不了架构师&#xff1f;>>> JSON basics At its simplest, JSON allows you to transform a set of data represented in a JavaScript object into a string that you can easily pass from one function to another, or -- in the case of as…

jquery的扩展方法介绍

最近一直在写js&#xff0c;这其中也少不了一位js的主角了jQuery&#xff0c;下面介绍的是jQuery的一些扩展&#xff0c;也就是jQuery的扩展方法&#xff0c;jQuery的扩展方法有两种方式&#xff0c;一种是jQuery本身的扩展方法&#xff0c;另一种是jQuery所选对象的扩展方法&a…

Gtk-WARNING : cannot open display----这个问题在NVIDIA TX2上碰到过就是DISPLAY=“:0“

切换到root权限&#xff0c;在终端下使用gedit时出现下面的错误&#xff1a; No protocol specified (gedit:14333): Gtk-WARNING **: cannot open display: :0.0 下面是从网上找到的正解&#xff0c;贴——分析——总结之&#xff1a; 原因&#xff1a; 当使用su 到另外一个用…

蓝桥杯vip答案java_Java实现 蓝桥杯VIP 算法训练 麦森数

算法训练 麦森数时间限制&#xff1a;1.0s 内存限制&#xff1a;256.0MB问题描述形如2P-1的素数称为麦森数&#xff0c;这时P一定也是个素数。但反过来不一定&#xff0c;即如果P是个素数&#xff0c;2P-1不一定也是素数。到1998年底&#xff0c;人们已找到了37个麦森数。最大的…

Visual Studio 2010 中JS注释制作

Visual Studio 2010中的js注释已经很强大了&#xff0c;但怎么才能和调用c#的方法一样容易呢&#xff1f;怎样才能让每个参数都有注释说明呢&#xff1f;底下就是想要的答案。 先上图&#xff0c;如图所示&#xff1a; 其中红色的办法为注释效果&#xff0c;当然制作的方法也在…