jfinal UEditor 七牛云 上传


前端配置

快捷配置:http://www.jfinal.com/share/178

详细配置:http://www.jfinal.com/share/142



我这里的上传是先上传到服务器然后再转到七牛云

ueditor 的全局路径配置到这个action中的这个方法的index里面


/**

 * 七牛云上传图片

 * 

 * @date 2017-06-28

 * 

 */

public class UploadImgUtil extends BaseController {

static Logger log = Logger.getLogger(UploadImgUtil.class);


public void index() {

if ("config".equals(getPara("action"))) {

// 这里千万注意 "config.json" 文件前方的目录一定要正确

render("../public/js/ueditor/jsp/myconfig.json");

return;

}

UploadFile uf = getFile("upfile");

String fileName = uploadImg(uf, "articles");

Map<String, Object> map = new HashMap<String, Object>();

map.put("state", "SUCCESS");

map.put("url", fileName);// 其中jfinal_demo 是项目名

map.put("title", fileName);

map.put("original", uf.getOriginalFileName());

map.put("type",""); // 这里根据实际扩展名去写

map.put("size", uf.getFile().length());

renderJson(map);

}


/**

* @param file

* @param 根据action保存到的文件夹名字

* @return

* @author Gao WenBin

* @date 2017-06-28

*/

public static String uploadImg(UploadFile file, String actionFileName) {

// 构造一个带指定Zone对象的配置类

Configuration cfg = new Configuration(Zone.zone1());

// ...其他参数参考类注释

UploadManager uploadManager = new UploadManager(cfg);

// ...生成上传凭证,然后准备上传

               //读取配置文件获取七牛云的key   value  URL

String accessKey = PropKit.get("**************");

String secretKey = PropKit.get("**************");

String imgAddressUrl =PropKit.get("QIUNIUURL");

// 上传到图片服务器存储空间的位置

                //七牛云存贮空间名字

String bucket = "****************";

// 后缀名

String suffixName = file.getOriginalFileName().substring(file.getOriginalFileName().lastIndexOf(".") + 1);

// 文件夹路径

String filePath = file.getUploadPath() + "/" + actionFileName + "/";

// 创建文件夹

FileUtil.mkdirs(filePath);


// 默认不指定key的情况下,以文件内容的hash值作为文件名

String key = DateUtil.format(new Date(), "yyyyMMddhhmmss") + numBer();

// 时分秒作为文件名字

String fileName =  key+ "." + suffixName;

String fullName = filePath + fileName;

try {

// 创建文件

if (!FileUtil.exists(fullName)) {

FileOutputStream fos = new FileOutputStream(fullName);

FileInputStream fis = new FileInputStream(file.getFile());

byte[] buffer = new byte[1024];

int len = 0;

while ((len = fis.read(buffer)) > 0) {

fos.write(buffer, 0, len);

}

fos.flush();

fis.close();

fos.close();

}



Auth auth = Auth.create(accessKey, secretKey);

String upToken = auth.uploadToken(bucket);

Response response = uploadManager.put(fullName, key, upToken);

// 解析上传成功的结果

DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);

System.out.println(putRet.key);

System.out.println(putRet.hash);

log.info("上传图片回调:" + putRet.key);

return imgAddressUrl+putRet.key;

} catch (QiniuException ex) {

Response r = ex.response;

log.error("七牛云报错!"+r.toString());

try {

log.error("七牛云报错!"+r.bodyString());

return null;

} catch (QiniuException ex2) {

return null;

}

}catch (Exception e) {

log.error("上传图片出错!"+e);

}

return null;

}


/** 生成随机的6位数 */

public static int numBer() {

String str = "";

str += (int) (Math.random() * 9 + 1);

for (int i = 0; i < 5; i++) {

str += (int) (Math.random() * 10);

}

int num = Integer.parseInt(str);

return num;

}


评论区

JFinal

2017-07-07 17:24

这个功能前段时间有两位小伙伴也在问,感谢你的分享

YanZ

2017-07-16 14:08

十三牧

2018-05-22 01:23

多文件上传的时候 request里面没有multipart/form-data getfiles()报错啊

胖之

2018-07-04 17:32

@十三牧 捂脸好久了啊。。。。我这里的其实是单张单张上传的用的是getFile getFiles 没试过

一生热爱

2019-03-12 13:48

我的跟你的一样,但是FileUtil类里面没有那些方法就报错

一生热爱

2019-03-19 15:36

可以把这个类分享一下么FileUtil

热门分享

扫码入社