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

相關文章
相關標籤/搜索