最近在用JFinal写博客,想要把图片上传到阿里云,我是很懒的,百度了下居然没有jfinal+OSS的例子,只能自己写了.....
Controller:
/**
 * 阿里云上传图片Controller
 */
public class AliOssController extends Controller {
    private static Prop p = PropKit.use("aliyun.txt");
    public void index() throws Exception {
        OSSClient ossClient = FileUtil.getOSSClient();
        UploadFile uploadFile = getFile();
        File file = new File(uploadFile.getUploadPath() + "/" + uploadFile.getOriginalFileName());
        String picUrl = FileUtil.uploadImg(ossClient, file, p.get("BACKET_NAME"), p.get("FOLDER"));
        renderJson(picUrl);
    }
}FileUtils:
public class FileUtil {
    private static Prop p = PropKit.use("aliyun.txt");
    public static OSSClient getOSSClient() {
        return new OSSClient(p.get("ENDPOINT"), p.get("ACCESS_KEY_ID"), p.get("ACCESS_KEY_SECRET"));
    }
    public static String uploadImg(OSSClient ossClient, File file, String bucketName, String folder) {
        String url = null;
        try {
            // 以输入流的形式上传文件
            InputStream is = new FileInputStream(file);
            // 文件名
            String fileName = file.getName();
            fileName = UUID.randomUUID().toString().replaceAll("-","") + fileName;
            // 文件大小
            Long fileSize = file.length();
            // 创建上传Object的Metadata
            ObjectMetadata metadata = new ObjectMetadata();
            // 上传的文件的长度
            metadata.setContentLength(is.available());
            // 指定该Object被下载时的网页的缓存行为
            metadata.setCacheControl("no-cache");
            // 指定该Object下设置Header
            metadata.setHeader("Pragma", "no-cache");
            // 指定该Object被下载时的内容编码格式
            metadata.setContentEncoding("utf-8");
            // 文件的MIME,定义文件的类型及网页编码,决定浏览器将以什么形式、什么编码读取文件。如果用户没有指定则根据Key或文件名的扩展名生成,
            // 如果没有扩展名则填默认值application/octet-stream
            metadata.setContentType(getContentType(fileName));
            // 指定该Object被下载时的名称(指示MINME用户代理如何显示附加的文件,打开或下载,及文件名称)
            metadata.setContentDisposition("filename/filesize=" + fileName + "/" + fileSize + "Byte.");
            // 上传文件 (上传文件流的形式)
            PutObjectResult putResult = ossClient.putObject(bucketName, folder + fileName, is, metadata);
            // 解析结果
            url = "https://" + p.get("BACKET_NAME") + "." + p.get("ENDPOINT") + "/" + p.get("FOLDER") + fileName;
            System.out.println("上传的文件路径:" + url);
            return url;
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("上传阿里云异常");
        }
        return url;
    }
    public static String getContentType(String fileName) {
        // 文件的后缀名
        String fileExtension = fileName.substring(fileName.lastIndexOf("."));
        if (".bmp".equalsIgnoreCase(fileExtension)) {
            return "image/bmp";
        }
        if (".gif".equalsIgnoreCase(fileExtension)) {
            return "image/gif";
        }
        if (".jpeg".equalsIgnoreCase(fileExtension) || ".jpg".equalsIgnoreCase(fileExtension)
                || ".png".equalsIgnoreCase(fileExtension)) {
            return "image/jpeg";
        }
        if (".html".equalsIgnoreCase(fileExtension)) {
            return "text/html";
        }
        if (".txt".equalsIgnoreCase(fileExtension)) {
            return "text/plain";
        }
        if (".vsd".equalsIgnoreCase(fileExtension)) {
            return "application/vnd.visio";
        }
        if (".ppt".equalsIgnoreCase(fileExtension) || "pptx".equalsIgnoreCase(fileExtension)) {
            return "application/vnd.ms-powerpoint";
        }
        if (".doc".equalsIgnoreCase(fileExtension) || "docx".equalsIgnoreCase(fileExtension)) {
            return "application/msword";
        }
        if (".xml".equalsIgnoreCase(fileExtension)) {
            return "text/xml";
        }
        // 默认返回类型
        return "image/jpeg";
    }这里用到了OSS四个配置,没做过的,百度一下就知道是什么意思了
#阿里云oss配置 ENDPOINT= ACCESS_KEY_ID= ACCESS_KEY_SECRET= BACKET_NAME= FOLDER=

每天在俱乐部提问,那么多大佬帮忙解答,so...分享个例子帮助下比我还白的小白~~~
排版可能有些乱,拉到idea里格式化一下就好
欢迎更多的小伙伴加入JFinal俱乐部一起学习~~
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
或者前端直接上传oss 七牛 会更好 直接不走自己服务器了