公司用到了 阿里的文件服务器 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这个对象 然后慢慢的转了过来 测试成功。