阿里云 ESC 内网上传OSS (JFinal)java

由于本人前端时间花了7块钱买了两年的阿里云OSS ,搞了一下发现这玩意儿 除了阿里云的ESC服务器 内网链接免费。  基本上没什么用 因为其他公共读写均属于收费。  刚好本人也对阿里云服务器垂涎已久 早就想下手。可出于贫穷 迟迟未肯解囊  ...终于在一次风和日丽的上午  趁着冥想之际 帕金森抖手没有按耐住 点了一下支付 ,买了个3年的同地域的 ESC服务器   。。 切记这个一定得是同地域的 才能连接内网   。。废话不多说了 有些代码都是从别的地方搬运的  零零碎碎的  就不贴上地址了  。上例子吧  

JFinal的上传方法    ----------------------------------------------------

List l = new ArrayList();
Map map = new HashMap();
UploadFile file2 = getFile("file","video");//JFinal文件自动上传video路径
OSSClient ossClient = OSSUtil.getOSSClient();
String picUrl = OSSUtil.uploadImg(ossClient, file2.getFile(), "mawenjie01","video/"); // OSS上传方法
file2.getFile().delete();// 删除项目下面的视频  只保留OSS的
Record r = new Record();
r.set("imgname", file2.getOriginalFileName());
r.set("url",picUrl);
l.add(r);
map.put("code", "200");
map.put("count", 1);
map.put("url", l);
this.renderJson(map);

OSSUtil 类  ----------------------------------------------

package com.wenjie.util;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.ObjectMetadata;
import com.aliyun.oss.model.PutObjectResult;
import com.jfinal.kit.Prop;
import com.jfinal.kit.PropKit;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.URL;
import java.util.Date;
import java.util.UUID;

public class OSSUtil {
    private static Prop p = PropKit.use("aliyun.txt");


    public static OSSClient getOSSClient() {
        return new OSSClient(p.get("ENDPOINT"), p.get("ACCESS_KEY_ID"), p.get("ACCESS_KEY_SECRET"));
    }


    public static String uploadImg(OSSClient ossClient, File file, String bucketName, String folder) {
        String url = null;
        try {
            // 以输入流的形式上传文件
            InputStream is = new FileInputStream(file);
            // 文件名
            String fileName = file.getName();
            fileName = UUID.randomUUID().toString().replaceAll("-", "") + fileName;
            // 文件大小
            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.");
            // 上传文件 (上传文件流的形式)
            ossClient.putObject(bucketName, folder + fileName, is, metadata);
            // Endpoint以杭州为例,其它Region请按实际情况填写。
            String endpoint = "oss-cn-beijing.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
            String accessKeyId = p.get("ACCESS_KEY_ID");
            String accessKeySecret = p.get("ACCESS_KEY_SECRET");
// 创建OSSClient实例。
            OSS ossClient2 = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
//设置过期时间 -- 十年
            Date expiration = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 10);
// 生成以GET方法访问的签名URL,访客可以直接通过浏览器访问相关内容。
            URL url2 = ossClient2.generatePresignedUrl(bucketName, folder + fileName, expiration);

// 关闭OSSClient。
            ossClient2.shutdown();

            System.out.println("上传的文件路径:" + url2);

            // 关闭OSSClient。
            ossClient.shutdown();
            return url2.toString();
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("上传阿里云异常");
        }
        return url;
    }

    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";
    }
}

 

你可能感兴趣的:(OSS上传视频)