spring mvc中对接oss

1 篇文章 0 订阅

 

阿里云提供了存储图片的oss服务,下面是java中在首页spring的时候,如何将oss的给你对接到程序中

首先你得在阿里云购买oss服务

1:前端

<body>
 <form:form action="/addMyPicture">
     <img id="image" src="">
     <span>选择文件</span>
     <input type="file" id="file" required="required"><br>
     <span>描述</span>
     <textarea id="description" required="required"></textarea>
     <input type="submit" name="提交" onclick="addMyPicture()">
 </form:form>
</body>

2.js

function addMyPicture() {
       var imageUrl = $("#image")[0].src;
       if(imageUrl == null || imageUrl == "" || imageUrl == undefined){
         alert("图片不存在");
         return;
       }else {
           imageUrl = imageUrl;
       }
       var data = {
         'url': imageUrl,
         'description' : $("#description").val()
       }
       postWithLoadingMask("/addMyPicture",data,function (res) {
           if(res.status == 1){
               console.log("success");
              alert("result->:"+res);

           }
       },function (error) {
           console.log("error",error);
       });
   }

3.后台代码

@RequestMapping(value ="upload",method = RequestMethod.POST)
  public String upload(HttpServletRequest req, HttpServletResponse res){
    String imageUrl = "/images";
    String realsavepath = req.getSession().getServletContext().getRealPath(imageUrl);
    File savedir = new File(realsavepath);
    // 如果目录不存在就创建
    if (!savedir.exists()) {
      savedir.mkdirs();
    }
    MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) req;
    MultipartFile multipartFile = multipartRequest.getFile("file");
    String suffix = multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf("."));
    String logImageName = UUID.randomUUID().toString()+suffix;// 构建文件名称
    /** 拼成完整的文件保存路径加文件* */

    String fileName = realsavepath + File.separator + logImageName;

    File file = new File(fileName);
    try {
      multipartFile.transferTo(file);
      fileName= fileUploadHelper.uploadObject2OSS(file);
    } catch (IllegalStateException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
    return fileName;
  }

 

4.上传部分代码

package com.hyc.util;

import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.ObjectMetadata;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import org.springframework.stereotype.Service;
import java.io.*;
import java.util.UUID;

@Service
public class FileUploadHelper {

    //阿里云API的内或外网域名
    private static String ENDPOINT;
    //阿里云API的密钥Access Key ID
    private static String ACCESS_KEY_ID;
    //阿里云API的密钥Access Key Secret
    private static String ACCESS_KEY_SECRET;
    // BUCKET
    private static String BUCKETNAME;
  //图片文件夹
  private static String PREFIX;
    //图片网址
  private static String DOMAIN;

    static {
        ENDPOINT = "地区"; //如 oss-ap-southeast-1.aliyuncs.com
        BUCKETNAME = "bucketName";  // 你在阿里云建的bucket Name
        ACCESS_KEY_ID = "key_id"; //  自己的Key
        ACCESS_KEY_SECRET = "key_value";//  自己的Key-VALUE
        PREFIX = "images/";
        DOMAIN = "域名";
    }

    public static final OSSClient getOSSClient(){
        return new OSSClient(ENDPOINT,ACCESS_KEY_ID, ACCESS_KEY_SECRET) ;
    }

    public static final String uploadObject2OSS(File file) {
        OSSClient client = 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());
            metadata.setCacheControl("no-cache");
            metadata.setHeader("Pragma", "no-cache");
            metadata.setContentEncoding("utf-8");
            metadata.setContentType(getContentType(fileName));
            metadata.setContentDisposition("filename/filesize=" + fileName + "/" + fileSize + "Byte.");
            //上传文件
            PutObjectRequest request = new PutObjectRequest(BUCKETNAME, PREFIX + fileName, is, metadata);
            client.putObject(request);
            resultStr = DOMAIN+"/"+PREFIX+ fileName;
        } catch (Exception e) {
      e.printStackTrace();
        }
        return resultStr;
    }

    /**
     * 通过文件名判断并获取OSS服务文件上传时文件的contentType
     * @param fileName 文件名
     * @return 文件的contentType
     */
    public static final 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(".jpg".equalsIgnoreCase(fileExtension)) return "image/jpg";
        if(".png".equalsIgnoreCase(fileExtension)) return "image/png";
        if(".jpeg".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 "text/html";
    }

}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值