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

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

首先增长阿里的jar到个人maven项目。web

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

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这个对象 而后慢慢的转了过来  测试成功。mvc

相关文章
相关标签/搜索