近期项目中需要将前台vue穿过来base64格式的图片记录保存存到阿里云oss上,通过网上找的一些方法结合自己的实际情况终于实现了,下面直接上代码:

前台vue代码:

<template>
<div class="insti-container">
<div v-if="mediciner">
<h2>营业执照</h2>
<div class="loadImg">
<div id="img-group">
<div class="img-item" style="display:none">
<img id="seeimg" :src="imgUrl" alt="">
</div>
</div>
<div id="ossfile">加载上传插件失败!<a class ='btn'>刷新</a></div>
<div class="add-pic Single" @click="uploadImg" id="container">
<a id="selectfiles" href="javascript:void(0);" class='btn'></a>
</div>
</div>
</div>
<h2>上传资质照片(<span>{{curNumber}}</span>/9)</h2>
<div class="loadImg">
<div id="img-group">
<div class="img-item" v-for="(item,index) in inspect" :key="index" @click="delectImg(index)">
<img :src="item" alt="">
<p class="closeImg" ref="closeImg"></p>
</div>
</div>
<div class="add-pic" @click="addPic()" v-show="picFlag">
<input name="files" id="uploaderInput" type="file" accept="image/*" multiple/>
</div>
</div>
<button class="Submission" @click="Submission">下一步</button>
<p class="Prompt">您上传的资质照片,可能会作为您的资质实力公开展示</p>
<div>
<form name=theform>
<input type="radio" name="myradio" value="local_name" class="dn" />
<input type="radio" name="myradio" value="random_name" class="dn" checked=true/>
<br/>
<input type="text" class="dn" id='dirname' placeholder="如果不填,默认是上传到根目录" size=50>
</form>
<br/>
<div id="container" class="dn">
</div>
<pre id="console" class="dn"></pre>
<p>&nbsp;</p>
</div>
</div>
</template>
<script>
import {loginService} from "../services/login"
import {Toast} from 'mint-ui'
import $ from 'jquery'
export default {
data(){
return{
curNumber:0,
inspect: [],//检查照片
picFlag:true,
imgUrl: "",//社保照片,
type:this.$route.query.type,
mediciner:true
}
},
methods: {
Submission(){//提交
console.log(this.inspect)
let _imgSrc = $("#seeimg").attr("src");
this.imgUrl = _imgSrc;
if(this.type == "p"){//判断是企业还是医生
if(_imgSrc == ""){
Toast("请上传营业执照")
}else{
loginService.supplierAddImg(this.imgUrl,this.inspect).then(r =>{
if(r.flag == 20000){
let path = {path: '/accountReceivable', query: {}}
this.$router.push(path)
}else{
Toast(r.msg)
}
})
}
}else{
loginService.supplierAddImg(inspect).then(r =>{
if(r.flag == 20000){
let path = {path: '/accountReceivable', query: {}}
this.$router.push(path)
}else{
Toast(r.msg)
}
})
}
},
uploadImg(){
this.imports();
},
RemoveValByIndex(arr, index) {
arr.splice(index, 1);
},
delectImg(ind){
this.RemoveValByIndex(this.inspect,ind)
this.curNumber = this.inspect.length
if(this.inspect.length < 9){
this.picFlag = true
}
},
addPic(){
var vm = this;
var input = $("#uploaderInput");
input.unbind('change').on('change', function (e) {
var files = input[0].files;
if (files.length == 9) vm.picFlag = false;
for (var i = 0; i < files.length; i++) {
var reader = new FileReader();
reader.readAsDataURL(files[i]);
reader.onload = function () {
vm.curNumber = vm.inspect.length+1;
if (vm.inspect.length < 9) {
vm.inspect.push(this.result);
}
if (vm.inspect.length == 9) vm.picFlag = false
};
}
});
},
imports() {//渲染dom后引入上传插件方法
require("!!script-loader!../../libs/uptooss/lib/crypto1/crypto/crypto.js")
require("!!script-loader!../../libs/uptooss/lib/crypto1/hmac/hmac.js")
require("!!script-loader!../../libs/uptooss/lib/crypto1/sha1/sha1.js")
require("!!script-loader!../../libs/uptooss/lib/base64.js")
require("!!script-loader!../../libs/uptooss/lib/plupload-2.1.2/js/plupload.full.min.js")
require("!!script-loader!../../libs/uptooss/upload.js")
// let obj = document.getElementById('ossfile').innerHTML
// console.log(obj)
}
},
mounted(){
if(this.type == "p"){//判断是企业还是医生
this.mediciner = true
}else{
this.mediciner = false
}
this.imports()
var uploader = new plupload.Uploader({
runtimes : 'html5,flash,silverlight,html4',
browse_button : 'selectfiles',
//multi_selection: false,
container: document.getElementById('container'),
flash_swf_url : 'lib/plupload-2.1.2/js/Moxie.swf',
silverlight_xap_url : 'lib/plupload-2.1.2/js/Moxie.xap',
url : 'http://oss.aliyuncs.com',
init: {
PostInit: function() {
document.getElementById('ossfile').innerHTML = '';
// document.getElementById('postfiles').onclick = function() {
// set_upload_param(uploader, '', false);
// return false;
// };
},
FilesAdded: function(up, files) {
//console.log(up.total);return;
if(up.total.queued == 2){
return;
}
plupload.each(files, function(file) {
document.getElementById('ossfile').innerHTML = '<div id="' + file.id + '"><b></b>'
//document.getElementById('ossfile').innerHTML = '<div id="' + file.id + '">' + file.name + ' (' + plupload.formatSize(file.size) + ')<b></b>'
//+'<div class="progress"><div class="progress-bar" style="width: 0%"></div></div>'
//+'<div class="progress"></div>'
+'</div>';
});
up.start();
},
BeforeUpload: function(up, file) {
check_object_radio();
get_dirname();
set_upload_param(up, file.name, true);
},
UploadProgress: function(up, file) {
var d = document.getElementById(file.id);
//d.getElementsByTagName('b')[0].innerHTML = '<span>' + file.percent + "%</span>";
//var prog = d.getElementsByTagName('div')[0];
//var progBar = prog.getElementsByTagName('div')[0]
//progBar.style.width= 2*file.percent+'px';
//progBar.setAttribute('aria-valuenow', file.percent);
},
FileUploaded: function(up, file, info) {
if (info.status == 200) {
$(".img-item").show();
$(".Single").css({
"position": "absolute",
"top": 0,
"opacity": 0
})
//document.getElementById(file.id).getElementsByTagName('b')[0].innerHTML = 'upload to oss success, object name:' + get_uploaded_object_name(file.name);
imgUrl = host + '/' + get_uploaded_object_name(file.name);
document.getElementById('seeimg').setAttribute('src',imgUrl);
this.imgUrl = imgUrl;
}else{
document.getElementById(file.id).getElementsByTagName('b')[0].innerHTML = info.response;
}
},
Error: function(up, err) {
document.getElementById('console').appendChild(document.createTextNode("\nError xml:" + err.response));
}
}
});
uploader.init();
}
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped lang="less">
@import "../less/functions";
.insti-container{
width: 95%;
height: 100%;
background: #1d1d28;
overflow-y: auto;
overflow-x: hidden;
margin: 0 auto;
h2{
font-weight: normal;
color: #fff;
font-size: 16px;
padding: .5rem 0;
}
.Submission{
width: 75%;
background-image: linear-gradient(-135deg, #2CBB86 0%, #2CBB55 100%);
border-radius: 50px;
padding: .2rem 0;
margin: 1rem auto 0;
display: block;
color: #fff;
font-size: 16px;
}
.Prompt{
width: 75%;
color: #999;
font-size: 12px;
margin: .5rem auto;
}
#img-group{
width: 95%;
height: auto;
display: -webkit-flex;
flex-wrap: wrap;
justify-content: flex-start;
margin: 0 auto;
.img-item {
width: 30%;
height: 2rem;
position: relative;
margin: .2rem .15rem;
position: relative;
border-radius: 5px;
overflow: hidden;
.closeImg{
width: .5rem;
height: .5rem;
position: absolute;
right: 0;
top: 0;
background:url(../images/addInfo/deleteImg.png) no-repeat center;
background-size: contain
}
}
}
.img-item img {
width: 100%;
height: auto;
}
.add-pic {
background: url(../images/addInfo/addImg.png) no-repeat center;
background-size: contain;
width: 30%;
height: 2rem;
text-align: center;
font-size: 2rem;
line-height: 3.5rem;
color: #979797;
position: relative;
overflow: hidden;
a{
display: block;
width: 100%;
height: 100%;
}
}
.add-pic input {
opacity: 0;
}
}
.insti-container::-webkit-scrollbar {
display: none;
}
.loadImg{
position: relative;
}
</style>

业务层抵用上传oss工具类

String[] src = orgImgUrl.split(",");
SerialBlob serialBlob = OSSFileUpload.decodeToImage(src[1]);
InputStream binaryStream = serialBlob.getBinaryStream();
String keys = RandomUtils.getNickName()+".jpg";
String url = OSSFileUpload.uploadFile2OSS(binaryStream, keys);
System.out.println("userAddVO2 = " + url+"===========================================================");

后台上传oss工具类:

package com.duojia.eagle.utils;

import com.alibaba.druid.util.StringUtils;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.Bucket;
import com.aliyun.oss.model.OSSObject;
import com.aliyun.oss.model.ObjectMetadata;
import com.aliyun.oss.model.PutObjectResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

import javax.imageio.ImageIO;
import javax.sql.rowset.serial.SerialBlob;
import java.awt.image.RenderedImage;
import java.io.*;
import java.net.URL;
import java.util.Date;
import java.util.Random;;

public class OSSFileUpload {private static final Logger logger = LoggerFactory.getLogger(OSSFileUpload.class);
    // endpoint以杭州为例,其它region请按实际情况填写
    private static String endpoint = "阿里云查找";
    // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号
    private static String accessKeyId = "阿里云查找";
    private static String accessKeySecret = "阿里云查找";
    private static String bucketName = "img-video";     //需要存储的bucketName
    private static String filedir = "supplier/ ";    //图片保存路径\
    private static String clientdir = "clientImg/ ";    //图片保存路径

    /**
     * 获取阿里云OSS客户端对象
     * @return ossClient
     */
    public static  OSSClient getOSSClient(){return new OSSClient(endpoint,accessKeyId,accessKeySecret);
    }public static SerialBlob decodeToImage(String imageString) throws Exception {BASE64Decoder decoder = new BASE64Decoder();
        byte[] imageByte = decoder.decodeBuffer(imageString);
        return new SerialBlob(imageByte);
    }/**
     * 上传到OSS服务器  如果同名文件会覆盖服务器上的
     *
     * @param instream 文件流
     * @param fileName 文件名称 包括后缀名
     * @return 出错返回"" ,唯一MD5数字签名
     */
    public static String uploadFile2OSS(InputStream instream, String fileName) throws Exception{OSSClient ossClient = OSSFileUpload.getOSSClient();
        String ret = "";
        try {//创建上传Object的Metadata
            ObjectMetadata objectMetadata = new ObjectMetadata();
            objectMetadata.setContentLength(instream.available());
            objectMetadata.setCacheControl("no-cache");
            objectMetadata.setHeader("Pragma", "no-cache");
            objectMetadata.setContentType(getContentType(fileName.substring(fileName.lastIndexOf("."))));
            objectMetadata.setContentDisposition("inline;filename=" + fileName);
            //上传文件
            PutObjectResult putResult = ossClient.putObject(bucketName, filedir + fileName, instream, objectMetadata);
            ret = String.valueOf(getUrl(fileName));
        } catch (IOException e) {logger.error(e.getMessage(), e);
        } finally {try {if (instream != null) {instream.close();
                }} catch (IOException e) {e.printStackTrace();
            }}return ret;
    }/**
     * 上传到OSS服务器  如果同名文件会覆盖服务器上的
     *
     * @param instream 文件流
     * @param fileName 文件名称 包括后缀名
     * @return 出错返回"" ,唯一MD5数字签名
     */
    public static String uploadClietImg2OSS(InputStream instream, String fileName) throws Exception{OSSClient ossClient = OSSFileUpload.getOSSClient();
        String ret = "";
        try {//创建上传Object的Metadata
            ObjectMetadata objectMetadata = new ObjectMetadata();
            objectMetadata.setContentLength(instream.available());
            objectMetadata.setCacheControl("no-cache");
            objectMetadata.setHeader("Pragma", "no-cache");
            objectMetadata.setContentType(getContentType(fileName.substring(fileName.lastIndexOf("."))));
            objectMetadata.setContentDisposition("inline;filename=" + fileName);
            //上传文件
            PutObjectResult putResult = ossClient.putObject(bucketName, clientdir + fileName, instream, objectMetadata);
            ret = String.valueOf(getUrl(fileName));
        } catch (IOException e) {logger.error(e.getMessage(), e);
        } finally {try {if (instream != null) {instream.close();
                }} catch (IOException e) {e.printStackTrace();
            }}return ret;
    }/**
     * 字节数组上传
     *
     * @Title uploadPic
     * @param @param
     *            content
     * @param @param
     *            keys
     * @param @return
     * @return String
     * @Explain
     */
    public static String uploadPic(byte[] content, String keys) {OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);// 连接oss云存储服务器
        ossClient.putObject(bucketName, keys, new ByteArrayInputStream(content));
        String url = String.valueOf(getUrl(keys));
        ossClient.shutdown();
        return url;
    }/**
     * 获取文件URL
     *
     * @Title getUrl
     * @param @param
     *            key
     * @param @return
     * @return URL
     */
    public static String getUrl(String key) {if (key.indexOf("http") == -1) {OSSClient server = new OSSClient(endpoint, accessKeyId, accessKeySecret);// 连接oss云存储服务器
            // 设置URL过期时间为10年 3600l* 1000*24*365*10
            Date expirations = new Date(new Date().getTime() + 1000 * 60 * 5);// url超时时间
            // 生成URL
            URL url = server.generatePresignedUrl(bucketName,filedir + key, expirations);
            String strUrl = String.valueOf(url);
            // 关闭client
            server.shutdown();
            System.out.println("strUrl = [" + strUrl + "]");
            return splitUrl(strUrl);
        } else {System.out.println("key = [" + key + "]");
            return splitUrl(key);
        }}/**
     * 切割url
     *
     * @param url
     * @return
     */
    public static String splitUrl(String url) {if (url.indexOf("?Expires") != -1) {return url.split("Expires")[0].substring(0,url.split("Expires")[0].length() -1 );
        }return url;
    }//base64字符串转化成图片
    public static boolean GenerateImage(String imgStr){   //对字节数组字符串进行Base64解码并生成图片
        if (imgStr == null) //图像数据为空
            return false;
        BASE64Decoder decoder = new BASE64Decoder();
        try
        {//Base64解码
            byte[] b = decoder.decodeBuffer(imgStr);
            for(int i=0;i<b.length;++i){if(b[i]<0)if(b[i]<0){//调整异常数据
                    b[i]+=256;
                }}//生成jpeg图片
            String keys = RandomUtils.getNickName();
            String imgFilePath = "/data/sites/duojia369/webapps/duojia/supplier/"+keys+"new.jpg";//新生成的图片
//            String imgFilePath = "C:\\Users\\Administrator\\Desktop\\工作安排\\"+keys+"new.jpg";
            OutputStream out = new FileOutputStream(imgFilePath);
            out.write(b);
            out.flush();
            out.close();
            return true;
        }catch (Exception e){return false;
        }}/**
     * 字符串转图片
     * @param base64String
     */
    public static boolean base64StringToImage(String base64String,String toImagePath,String imageType) {try {BASE64Decoder decoder = new sun.misc.BASE64Decoder();
            byte[] bytes1 = decoder.decodeBuffer(base64String);

            ByteArrayInputStream bais = new ByteArrayInputStream(bytes1);
            RenderedImage bi1 = ImageIO.read(bais);
            File w2 = new File(toImagePath);// 可以是jpg,png,gif格式
            if(!w2.exists()){w2.createNewFile();
                System.out.println("no exist=====");
            }System.out.println("pass...........");
            return ImageIO.write(bi1, imageType, w2);// 不管输出什么格式图片,此处不需改动
        } catch (IOException e) {e.printStackTrace();
            return false;
        }}//图片转化成base64字符串
    public static String GetImageStr(){//将图片文件转化为字节数组字符串,并对其进行Base64编码处理
        String imgFile = "C:\\Users\\Administrator\\Desktop\\工作安排\\q.jpg";//待处理的图片
        InputStream in = null;
        byte[] data = null;
        //读取图片字节数组
        try
        {in = new FileInputStream(imgFile);
            data = new byte[in.available()];
            in.read(data);
            in.close();
        }catch (IOException e){e.printStackTrace();
        }//对字节数组Base64编码
        BASE64Encoder encoder = new BASE64Encoder();
        return encoder.encode(data);//返回Base64编码过的字节数组字符串
    }//测试
    /*public static void main(String[] args) {
        String imgStr = "iVBORw0KGgoAAAANSUhEUgAAAHoAAACACAYAAADEUH2bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QjkwNkNDREEyQkM4MTFFOEE1ODBDNEU2Qzg0NUFBMUQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QjkwNkNDREIyQkM4MTFFOEE1ODBDNEU2Qzg0NUFBMUQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCOTA2Q0NEODJCQzgxMUU4QTU4MEM0RTZDODQ1QUExRCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCOTA2Q0NEOTJCQzgxMUU4QTU4MEM0RTZDODQ1QUExRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Psj3UYUAABtiSURBVHja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\n" +
                "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\n" +
                "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";
        GenerateImage(imgStr);
//        GetImageStr();
    }*/
    /**
     * 创建存储空间
     * @param ossClient      OSS连接
     * @param bucketName 存储空间
     * @return
     */
    public  static String createBucketName(OSSClient ossClient,String bucketName){//存储空间
        final String bucketNames=bucketName;
        if(!ossClient.doesBucketExist(bucketName)){//创建存储空间
            Bucket bucket=ossClient.createBucket(bucketName);
            logger.info("创建存储空间成功");
            return bucket.getName();
        }return bucketNames;
    }/**
     * 删除存储空间buckName
     * @param ossClient  oss对象
     * @param bucketName  存储空间
     */
    public static  void deleteBucket(OSSClient ossClient, String bucketName){ossClient.deleteBucket(bucketName);
        logger.info("删除" + bucketName + "Bucket成功");
    }/**
     * 创建模拟文件夹
     * @param ossClient oss连接
     * @param bucketName 存储空间
     * @param folder   模拟文件夹名如"qj_nanjing/"
     * @return  文件夹名
     */
    public  static String createFolder(OSSClient ossClient,String bucketName,String folder){//文件夹名
        final String keySuffixWithSlash =folder;
        //判断文件夹是否存在,不存在则创建
        if(!ossClient.doesObjectExist(bucketName, keySuffixWithSlash)){//创建文件夹
            ossClient.putObject(bucketName, keySuffixWithSlash, new ByteArrayInputStream(new byte[0]));
            logger.info("创建文件夹成功");
            //得到文件夹名
            OSSObject object = ossClient.getObject(bucketName, keySuffixWithSlash);
            String fileDir=object.getKey();
            return fileDir;
        }return keySuffixWithSlash;
    }/**
     * 根据key删除OSS服务器上的文件
     * @param ossClient  oss连接
     * @param bucketName  存储空间
     * @param folder  模拟文件夹名 如"qj_nanjing/"
     * @param key Bucket下的文件的路径名+文件名 如:"upload/cake.jpg"
     */
    public static void deleteFile(OSSClient ossClient, String bucketName, String folder, String key){ossClient.deleteObject(bucketName, folder + key);
        logger.info("删除" + bucketName + "下的文件" + folder + key + "成功");
    }/**
     * 上传图片至OSS
     * @param
     * @param file 上传文件(文件全路径如:D:\\image\\cake.jpg)
     * @return String 返回的唯一MD5数字签名
     * */
    public static  String uploadObject2OSS(File file) {OSSClient ossClient = OSSFileUpload.getOSSClient();
        String resultStr = null;
        try {//以输入流的形式上传文件
            InputStream is = new FileInputStream(file);
            //文件名
            String fileName = file.getName();
            //文件大小
            Long fileSize = file.length();
            //创建上传Object的Metadata
            ObjectMetadata metadata = new ObjectMetadata();
            //上传的文件的长度
            metadata.setContentLength(is.available());
            //指定该Object被下载时的网页的缓存行为
            metadata.setCacheControl("no-cache");
            //指定该Object下设置Header
            metadata.setHeader("Pragma", "no-cache");
            //指定该Object被下载时的内容编码格式
            metadata.setContentEncoding("utf-8");
            //文件的MIME,定义文件的类型及网页编码,决定浏览器将以什么形式、什么编码读取文件。如果用户没有指定则根据Key或文件名的扩展名生成,
            //如果没有扩展名则填默认值application/octet-stream
            metadata.setContentType(getContentType(fileName));
            //指定该Object被下载时的名称(指示MINME用户代理如何显示附加的文件,打开或下载,及文件名称)
            metadata.setContentDisposition("filename/filesize=" + fileName + "/" + fileSize + "Byte.");
            //上传文件   (上传文件流的形式)
            PutObjectResult putResult = ossClient.putObject(bucketName, filedir + fileName, is, metadata);
            //解析结果
            resultStr = putResult.getETag();
        } catch (Exception e) {e.printStackTrace();
            logger.error("上传阿里云OSS服务器异常." + e.getMessage(), e);
        }return resultStr;
    }/**
     * 通过文件名判断并获取OSS服务文件上传时文件的contentType
     * @param fileName 文件名
     * @return 文件的contentType
     */
    public static  String getContentType(String fileName){//文件的后缀名
        String fileExtension = fileName.substring(fileName.lastIndexOf("."));
        if(".bmp".equalsIgnoreCase(fileExtension)) {return "image/bmp";
        }if(".gif".equalsIgnoreCase(fileExtension)) {return "image/gif";
        }if(".jpeg".equalsIgnoreCase(fileExtension) || ".jpg".equalsIgnoreCase(fileExtension)  || ".png".equalsIgnoreCase(fileExtension) ) {return "image/jpeg";
        }if(".html".equalsIgnoreCase(fileExtension)) {return "text/html";
        }if(".txt".equalsIgnoreCase(fileExtension)) {return "text/plain";
        }if(".vsd".equalsIgnoreCase(fileExtension)) {return "application/vnd.visio";
        }if(".ppt".equalsIgnoreCase(fileExtension) || "pptx".equalsIgnoreCase(fileExtension)) {return "application/vnd.ms-powerpoint";
        }if(".doc".equalsIgnoreCase(fileExtension) || "docx".equalsIgnoreCase(fileExtension)) {return "application/msword";
        }if(".xml".equalsIgnoreCase(fileExtension)) {return "text/xml";
        }//默认返回类型
        return "image/jpeg";
    }//    public OSSFileUpload() {
//        ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
//    }
//    public static void main(String[] args) throws Exception {
//
//import java.io.*;
//import java.net.URL;
//import java.util.Date;
//import java.util.Random;;
//
//public class OSSFileUpload {
//    private static final Logger logger = LoggerFactory.getLogger(OSSFileUpload.class);
//    // endpoint以杭州为例,其它region请按实际情况填写
//    private static String endpoint = "https://oss-cn-beijing.aliyuncs.com";
//    // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号
//    private static String accessKeyId = "LTAIwSYt7T0g4Zp3";
//    private static String accessKeySecret = "vIZ2xV4ZVwZ9Ij43NkO3rjiKlcGAOu";
//    private static String bucketName = "img-video";     //需要存储的bucketName
//    private static String filedir = "supplier/ ";    //图片保存路径
//
//    /**
//     * 获取阿里云OSS客户端对象
//     * @return ossClient
//     */
//    public static  OSSClient getOSSClient(){
//        return new OSSClient(endpoint,accessKeyId,accessKeySecret);
//    }
//
//    /**
//     * 创建存储空间
//     * @param ossClient      OSS连接
//     * @param bucketName 存储空间
//     * @return
//     */
//    public  static String createBucketName(OSSClient ossClient,String bucketName){
//        //存储空间
//        final String bucketNames=bucketName;
//        if(!ossClient.doesBucketExist(bucketName)){
//            //创建存储空间
//            Bucket bucket=ossClient.createBucket(bucketName);
//            logger.info("创建存储空间成功");
//            return bucket.getName();
//        }
//        return bucketNames;
//    }
//
//    /**
//     * 删除存储空间buckName
//     * @param ossClient  oss对象
//     * @param bucketName  存储空间
//     */
//    public static  void deleteBucket(OSSClient ossClient, String bucketName){
//        ossClient.deleteBucket(bucketName);
//        logger.info("删除" + bucketName + "Bucket成功");
//    }
//
//    /**
//     * 创建模拟文件夹
//     * @param ossClient oss连接
//     * @param bucketName 存储空间
//     * @param folder   模拟文件夹名如"qj_nanjing/"
//     * @return  文件夹名
//     */
//    public  static String createFolder(OSSClient ossClient,String bucketName,String folder){
//        //文件夹名
//        final String keySuffixWithSlash =folder;
//        //判断文件夹是否存在,不存在则创建
//        if(!ossClient.doesObjectExist(bucketName, keySuffixWithSlash)){
//            //创建文件夹
//            ossClient.putObject(bucketName, keySuffixWithSlash, new ByteArrayInputStream(new byte[0]));
//            logger.info("创建文件夹成功");
//            //得到文件夹名
//            OSSObject object = ossClient.getObject(bucketName, keySuffixWithSlash);
//            String fileDir=object.getKey();
//            return fileDir;
//        }
//        return null;
//    }
//

//
//    /**
//     * Description: 判断OSS服务文件上传时文件的contentType
//     *
//     * @param FilenameExtension 文件后缀
//     * @return String
//     */
//    public static String getcontentType(String FilenameExtension) {
//        if (FilenameExtension.equalsIgnoreCase(".bmp")) {
//            return "image/bmp";
//        }
//        if (FilenameExtension.equalsIgnoreCase(".gif")) {
//            return "image/gif";
//        }
//        if (FilenameExtension.equalsIgnoreCase(".jpeg") ||
//                FilenameExtension.equalsIgnoreCase(".jpg") ||
//                FilenameExtension.equalsIgnoreCase(".png")) {
//            return "image/jpeg";
//        }
//        if (FilenameExtension.equalsIgnoreCase(".html")) {
//            return "text/html";
//        }
//        if (FilenameExtension.equalsIgnoreCase(".txt")) {
//            return "text/plain";
//        }
//        if (FilenameExtension.equalsIgnoreCase(".vsd")) {
//            return "application/vnd.visio";
//        }
//        if (FilenameExtension.equalsIgnoreCase(".pptx") ||
//                FilenameExtension.equalsIgnoreCase(".ppt")) {
//            return "application/vnd.ms-powerpoint";
//        }
//        if (FilenameExtension.equalsIgnoreCase(".docx") ||
//                FilenameExtension.equalsIgnoreCase(".doc")) {
//            return "application/msword";
//        }
//        if (FilenameExtension.equalsIgnoreCase(".xml")) {
//            return "text/xml";
//        }
//        return "image/jpeg";
//    }
//
//    /**
//     * 获得url链接
//     *
//     * @param key
//     * @return
//     */
//    public String getUrl(String key) {
//        // 设置URL过期时间为10年  3600l* 1000*24*365*10
//        Date expiration = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 10);
//        // 生成URL
//        URL url = ossClient.generatePresignedUrl(bucketName, key, expiration);
//        if (url != null) {
//            return url.toString();
//        }
//        return null;
//    }
}

vue 传base64到后台后台传到oss的java实现相关推荐

  1. Vue中base64 转图片上传

    // 拍照获取图片base64 // imgsrc: base64图片资源refreshDataList (imgsrc) {let data = this.baseImg(imgsrc)consol ...

  2. vue实现PC端调用摄像头拍照人脸录入、移动端调用手机前置摄像头人脸录入、及图片旋转矫正、压缩上传base64格式/文件格式

    PC端调用摄像头拍照上传base64格式到后台,这个没什么花里胡哨的骚操作,直接看代码 (canvas + video) <template><div><!--开启摄像头 ...

  3. vue+elementUI传一组id到后台

    vue+elementUI传一组id到后台(ids数组) 以批量删除为例 想穿一组id到后台,首先得获取id 想获取id, 首先得实现多选 如何实现表格多选? 官网原图自己看啦 https://ele ...

  4. 【Vue】vue2上传Excel表格到后台 实战教程(接上一篇下载Excel模板表格到本地)

    参考文章 作者原文链接入口 项目场景: 关于数据新增,需要从后台下载一个Excel表格,然后在表格里面添加数据,再上传给后台,后台做解析处理,往数据库添加数据 问题描述 需要用到elementUI的文 ...

  5. 前台传base64格式的图片,后台来接受处理.

    1.首先你得知道前台传的是什么玩意. <body><input type="file" id="image"><br/>&l ...

  6. JS.VUE后台上传视频,文件格式修改,nacos配置

    上传视频: 到nacos修改 application配置上传视频    16:         name: aboutUsVideo         mimeLimit: video/*   **** ...

  7. 若依前后端分离版源码分析-前端头像上传后传递到后台以及在服务器上存储和数据库存储设计

    场景 使用若依前后端分离版本时,分析其头像上传机制. 可作为续参考学习. 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获 ...

  8. vue移动端页面调用手机拍照_vue实现PC端调用摄像头拍照、移动端调用手机前置摄像头人脸录入、及图片旋转矫正、压缩上传base64格式/文件格式...

    export default { () { return {} }, methods: { # // 压缩图片 and 旋转角度纠正 下方代码 # 需要自行去掉 个人只作为着色效果加上 compres ...

  9. javaweb实现文件上传,前端与后台的结合实现

    大家好,这是原创的文件上传源码哦. 希望给大家带来参考价值. 阅读注意: 1.只给出了关键代码(但是绝大部分代码),需要自己小小润色一下. 2.代码分为前端与后台, 3.本人初学者,有错,望您指出. ...

  10. iview实现多文件上传,前段到后台

    前段 业务是 分别上传两个文件  : 1.一个报告 一个 表格,而且限制了格式 报告为doc 表格为xsl 2.有别的参数 也要,比如,上传人,上传日期,中心名称  这样的话,我们无法使用 iview ...

最新文章

  1. matlab极大值点个数,求一组数的极大值个数
  2. Redis基本数据的的常见命令操作
  3. Winforn中导入Excel并显示然后获取多选框选中的内容
  4. Thinkphp5.0快速入门笔记(1)
  5. Python标准库collections模块的Counter类
  6. 【音视频安卓开发 (二)】
  7. 第七章 进程环境 | 001 命令形参、gcc与g++的使用
  8. LeetCode 345. 反转字符串中的元音字母
  9. Base64编码解码原理
  10. java.sql.SQLSyntaxErrorException: ORA-00923: 未找到要求的 FROM 关键字
  11. 阿里巴巴分布式消息系统的演进之路
  12. 论文英文参考文献[10]的时候后面多空格_英语论文写作中空格及特殊符号的正确使用方法...
  13. PHP中的ZIP压缩与解压
  14. 数据结构与算法经典书籍——大话数据结构(带配套源码)
  15. Android实现两台手机屏幕共享和远程控制
  16. OpenGL 渲染 YUYV(YUV422)
  17. HTML:Marked-js+Bootstarp简单实现Markdown文本编辑器
  18. 基因加性方差、显性方差与上位性方差定义
  19. 局域网服务器如何设置代理访问公网
  20. Docker_学习笔记

热门文章

  1. archlinux安装配置、i3-wm配置、blurlock锁屏、archlinux音频蓝牙
  2. python之某年不同上公司不同财务指标比较
  3. 木桶新理论与信息安全
  4. HDU 6187 Destroy Walls
  5. 前端开发的 20 年变迁史~
  6. 数据透视表的几个技巧
  7. 线上打假遭遇多重困境 专家建言依靠“大数据”打假
  8. BZOJ 1038: [ZJOI2008]瞭望塔
  9. AI-DPL, you should know
  10. 淘宝,京东老喜欢降价售卖,瞬间感觉亏大了。这款报价脚本你值得拥有。