springmvc - 文件上传 - 使用阿里oss文件

公司用到了 阿里的文件服务器 oss ,我们之前用的是springmvc的上传文件。

首先增加阿里的jar到我的maven项目。

复制下面的sample这些java类。、

public class OSSObjectSample {
 private static final String ACCESS_ID = "****";
 private static final String ACCESS_KEY = "****";
 private static final String BUCKET_NAME = "111";
 private static OSSClient client = null;
 private static void initialize() {
  if (client == null) {
   client = new OSSClient(ACCESS_ID, ACCESS_KEY);
  }
 }
 /**
  * 
  * 上传文件 2015年7月2日14:11:27
  * 
  * @param key
  *            服务器的文件名称
  * 
  * @param file
  *            要上传的文件
  * 
  * @param serviceName
  *            那个服务器要访问的路径
  * @return
  * @throws OSSException
  * @throws ClientException
  * @throws FileNotFoundException
  */
 public static String OSSPutObject(String key, File file, String serviceName) {
  initialize();
  ObjectMetadata objectMeta = new ObjectMetadata();
  objectMeta.setContentLength(file.length());
  // 可以在metadata中标记文件类型
//  objectMeta.setContentType("image/jpeg");
  InputStream input;
  try {
   input = new FileInputStream(file);
   client.putObject(BUCKET_NAME, serviceName + "/" + key, input,
     objectMeta);
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return "http://" + BUCKET_NAME + ".oss-cn-hangzhou.aliyuncs.com/"
    + serviceName + "/" + key;
 }
 
 public static String OSSPutObject(String key,MultipartFile multipartFile , String serviceName) {
  initialize();
  
  CommonsMultipartFile commonsMultipartFile= (CommonsMultipartFile)multipartFile; 
        DiskFileItem diskFileItem = (DiskFileItem)commonsMultipartFile.getFileItem(); 
        File file = diskFileItem.getStoreLocation();
        return OSSPutObject(key, file, serviceName);
 }
 
}

开始的时候 使用client的单例。

 

然后springmvc使用的是MultipartFile这个文件对象接收的 打开源码看一下 和file是没有关系的 是自己定义的一个接口 然后在继续看 他们直接有没有共同点 没发现什么  然后百度看看  找到了CommonsMultipartFile这个对象 然后慢慢的转了过来  测试成功。

转载于:https://my.oschina.net/superman158/blog/473575

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值