/**
* 阿里云文件上传Jfinal,此方法是页面上传的url,写在controller下
* @throws Exception
*/
public void AliOSS() throws Exception{
String fileType="images";
HashMap<String, String> extMap = new HashMap<String, String>();
extMap.put("images", "gif,jpg,jpeg,png,bmp");
extMap.put("flash", "swf,flv");
extMap.put("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");
extMap.put("file", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2");
FilePart filePart= FileUtil.fileuploads(getRequest());
String fileExt = filePart.getFileName().substring(filePart.getFileName().lastIndexOf(".") + 1).toLowerCase();
String dirName="";
if(Arrays.<String>asList(extMap.get(fileType).split(",")).contains(fileExt)){
dirName=fileType;
String fileUrl=FileUtil.AliOSSUpload(filePart.getInputStream(),dirName+"/"+filePart.getFileName());
renderJson(fileUrl);
}else{
renderJavascript("alert('文件格式不允许!')");
}
}
获取文件数据流,方法写在FileUtil工具类里
/**
* HttpServletRequest获取http的数据流
* @param r
* @return
*/
public static FilePart fileuploads(HttpServletRequest r)
{
boolean flag=false;
MultipartParser mp;
try {
mp = new MultipartParser(r, 52428800, false, false, "UTF-8");
Part part = null;
while ((part = mp.readNextPart()) != null) {
String name = part.getName();
if (part.isFile())
{
FilePart filePart = (FilePart) part;
return filePart;
}
}
} catch (IOException e) {
e.printStackTrace();
return null;
}
return null;
}
/**
* 调用阿里云OSS sdk
* @param inputStream
* @param filePath
* @return
*/
public static String AliOSSUpload(InputStream inputStream, String filePath){
String accessid= "******";
String accesskey= "*******";
String host = "http://image.yuming.cn";
// endpoint以杭州为例,其它region请按实际情况填写
/*String endpoint = "oss-cn-shenzhen-internal.aliyuncs.com";*/
String endpoint ="oss-cn-shenzhen.aliyuncs.com";
// accessKey请登录https://ak-console.aliyun.com/#/查看
String accessKeyId = accessid;
String accessKeySecret = accesskey;
// 创建OSSClient实例
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// 上传,penderie为Bucket名,filePath为在Bucket下的路径,包括文件夹和文件名,imagse/0001.jpg
ossClient.putObject(“penderie”,filePath ,inputStream);
// 关闭client
ossClient.shutdown();
return “http://penderie.oss-cn-shenzhen.aliyuncs.com/“+filePath;
}