前端配置
快捷配置: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;
}