首页 > 其他分享 >文件上传

文件上传

时间:2022-12-05 17:37:26浏览次数:32  
标签:文件 java com oss aliyun org import 上传

package com.manageSystem.common.utils;

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.PutObjectResult;
import com.aliyun.oss.model.UploadFileRequest;
import com.aliyun.oss.model.UploadFileResult;
import com.manageSystem.framework.web.domain.AjaxResult;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import javax.xml.crypto.Data;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.net.URL;
import java.nio.charset.Charset;
import java.text.DecimalFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 *
 * @author cky
 * 代码来源阿里官网
 * 略有改动
 */
@Component
public class OssFileUpload {

    @Value("${oss.endPoint}")
    String endpoint;
    @Value("${oss.accessKeyId}")
    String accessKeyId = "yourAccessKeyId";
    @Value("${oss.accessKeySecret}")
    String accessKeySecret = "yourAccessKeySecret";
    @Value("${oss.bucketName}")
    String bucketName  ;

    public  List<URL> upload(MultipartFile[] files) throws IOException {
        MultipartEntityBuilder builder = MultipartEntityBuilder.create();
        DecimalFormat df = new DecimalFormat("#.##");

        HttpEntity multipart = builder.build();
       // 创建OSSClient实例。
       OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

       try {
               List<URL> list = new ArrayList<>();
               for(MultipartFile multipartFile  : files) {
                   String objectName = LocalDate.now()+"/" +multipartFile.getOriginalFilename();
                   PutObjectResult putObjectResult = ossClient.putObject(bucketName,objectName,new ByteArrayInputStream(multipartFile.getBytes()));
                   Date date = new Date(System.currentTimeMillis()+1000*60*60*24*7);
                   URL url = ossClient.generatePresignedUrl(bucketName, objectName,date );
                   list.add(url);
               }
              return list;
           }
       catch (OSSException oe) {
          oe.printStackTrace();
       } catch (ClientException ce) {
         ce.printStackTrace();
       } catch (Throwable throwable) {
           throwable.printStackTrace();
       } finally {
           if (ossClient != null) {
               ossClient.shutdown();
           }
       }

       return null;
    }

    public String getSuffix(final MultipartFile file) {
        if (file == null || file.getSize() == 0) {
            return null;
        }
        String fileName = file.getOriginalFilename();
        return fileName.substring(fileName.lastIndexOf(".") + 1);
} }



    @ApiOperation("OSS文件上传")
    @PostMapping(value = "/common/oss/upload",consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public AjaxResult uploadFile2(@RequestPart("file") MultipartFile[] file) {
        try {
            List<URL> upload = ossFileUpload.upload(file);
            return AjaxResult.success(upload);
        }catch (Exception e){e.printStackTrace();}

        return AjaxResult.error("oss上传失败");
    }

 

标签:文件,java,com,oss,aliyun,org,import,上传
From: https://www.cnblogs.com/wangweiip/p/16952925.html

相关文章

  • Vue2(笔记20) - 组件 - Vue 非单文件组件 和 几个注意点
    Vue 非单文件组件非单文件组件:一个文件中包含N个组件;单文件组件:一个文件中只包含有1个组件,以 XXX.vue 为组件文件,需要打包;传统做法<divid="root"><h2>学校名称:{{sch......
  • linux基本的目录及文件操作
    linux目录及文件操作1.显示文件内容语法:ls+(选项)+(文件或目录)只输入ls仅列出该目录下的普通文件。选项作用-a列出目录下(包括子目录)全部的文件,包括隐藏文......
  • vue-quill-editor富文本编辑器使用(带图片上传至七牛云,后端为django)
    vue-quill-editor富文本编辑器使用(带图片上传至七牛云,后端为django)1.安装vue-quill-editornpminstallvue-quill-editor-S2.引入到项目中有两种挂载方式:全局挂载......
  • Qt+vs读取文件(文件对话框问题)
    QtCreator文件定位正确,VS2010+QT定位失败://选择数据库名称voiddbSettingDlg::on_selectBtn_clicked(){QStringdataBaseName=QFileDialog::getOpenFileName(thi......
  • [Linux] C 语言遍历文件夹
    [Linux]C语言遍历文件夹hanjialeOK于2021-04-0421:13:16发布439收藏1分类专栏:C/C++版权C/C++专栏收录该内容31篇文章0订阅订阅专栏包含头文件#include<dir......
  • C++读写二进制文件
    方法一:#include<stdio.h>#include<stdlib.h>#include<fstream>#include<string>//size_treadBinaryFile(constchar*filename,unsignedchar*&data){......
  • SeriLog 实现多文件
      有一万个理由,按业务输出日志,关注某个业务的变化,磁盘够大的话,仍然可以在一个主文件中再写一份日志,即一份日志写全部的日志,另一些日志,则按业务分开这些文件,最普通的做法......
  • SiteFactory支持pdf一键上传
    ​ 当前功能基于PHP,其它语言流程大抵相同。大概流程:1.将docx文件上传到服务器中2.使用PHPoffice/PHPword实现将word转换为HTML3.将HTML代码返回并赋值到编辑器中......
  • 使用idea pom.xml文件打开就报错
    背景  今天来到公司,打开电脑,启动idea其中一个model项目的pom.xml就变成了下面的那个样子,如下图:解决经过各路大神提供思路终于通过暴力解决了问题,方式如下:总......
  • python处理pom.xml文件
    #coding=utf-8#@author:今夕#@Time:2022.12.0510:40#@file:test.py.py#@software:PyCharmimportosimpor......