//kindeditor的官方文档
//http://kindeditor.net/docs/upload.html
//前台页面
// 编辑器参数
kingEditorParams : {
//指定上传文件参数名称等同于<input name="uploadFile">属性
filePostName : "uploadFile",
//指定上传文件请求的url
uploadJson : '/pic/upload',
//上传类型,分别为image、flash、media、file
dir : "image"
}
<!-- 使用springMVC上传文件,需要在springmvc.xml中配置文件上传解析器,id名称一定为multipartResolver -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设定默认编码 -->
<property name="defaultEncoding" value="UTF-8"></property>
<!-- 可对文件上传大小做限制,具体属性可以查看 如5M=1024*1024*5-->
<property name="maxUploadSize" value="5242880"></property>
</bean>
<!-- 在web层添加配置文件client.conf,书写内容为tracker_server=10.211.55.3:22122 -->
tracker_server=10.211.55.3:22122
<!-- 在web层添加配置文件FastDFSURL.properties,书写内容为 -->
#图片服务器的地址
IMAGE_SERVER_URL="http://10.211.55.3/"
// 使用kindeditor需要返回的json数据格式如下,则返回一个Map集合即可(Entity类也可以)
返回格式(JSON)
//成功时
{
"error" : 0,
"url" : "http://www.example.com/path/to/file.ext"
}
//失败时
{
"error" : 1,
"message" : "错误信息"
}
//FastDFSClient为工具类
import org.csource.common.NameValuePair;
import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient1;
import org.csource.fastdfs.StorageServer;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;
public class FastDFSClient {
private TrackerClient trackerClient = null;
private TrackerServer trackerServer = null;
private StorageServer storageServer = null;
private StorageClient1 storageClient = null;
public FastDFSClient(String conf) throws Exception {
if (conf.contains("classpath:")) {
conf = conf.replace("classpath:", this.getClass().getResource("/").getPath());
}
ClientGlobal.init(conf);
trackerClient = new TrackerClient();
trackerServer = trackerClient.getConnection();
storageServer = null;
storageClient = new StorageClient1(trackerServer, storageServer);
}
/**
* 上传文件方法
* <p>Title: uploadFile</p>
* <p>Description: </p>
* @param fileName 文件全路径
* @param extName 文件扩展名,不包含(.)
* @param metas 文件扩展信息
* @return
* @throws Exception
*/
public String uploadFile(String fileName, String extName, NameValuePair[] metas) throws Exception {
String result = storageClient.upload_file1(fileName, extName, metas);
return result;
}
public String uploadFile(String fileName) throws Exception {
return uploadFile(fileName, null, null);
}
public String uploadFile(String fileName, String extName) throws Exception {
return uploadFile(fileName, extName, null);
}
/**
* 上传文件方法
* <p>Title: uploadFile</p>
* <p>Description: </p>
* @param fileContent 文件的内容,字节数组
* @param extName 文件扩展名
* @param metas 文件扩展信息
* @return
* @throws Exception
*/
public String uploadFile(byte[] fileContent, String extName, NameValuePair[] metas) throws Exception {
String result = storageClient.upload_file1(fileContent, extName, metas);
return result;
}
public String uploadFile(byte[] fileContent) throws Exception {
return uploadFile(fileContent, null, null);
}
public String uploadFile(byte[] fileContent, String extName) throws Exception {
return uploadFile(fileContent, extName, null);
}
}
// 书写Controller层代码
import java.util.HashMap;
import java.util.Map;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import cn.e3mall.common.utils.FastDFSClient;
@Controller
public class PictureController {
//动态读取FastdfsURL.properties中url地址,解决硬编码问题
@Value("${IMAGE_SERVER_URL}")
private String IMAGE_SERVER_URL;
@RequestMapping("/pic/upload")
@ResponseBody
public Map uploadPicture(MultipartFile uploadFile){
try{
//此处使用的fastdfs_client Maven工程,安装到本地仓库,并添加依赖可以直接使用(目的导入fastdfs_client.jar)
//把图片上传到服务器
FastDFSClient fastDFSClient = new FastDFSClient("classpath:conf/client.conf");
//获得文件的扩展名
String originalName = uploadFile.getOriginalFilename();
String ext = originalName.substring(originalName.lastIndexOf(".")+1);
//得到一个图片的地址和文件名
String url = fastDFSClient.uploadFile(uploadFile.getBytes(),ext);
//补充完整的URL
url = IMAGE_SERVER_URL + url;
//kindeditor的官方文档
//http://kindeditor.net/docs/upload.html
//使用的图片上传为kindeditor插件,需要返回json串
//返回Map,通过@ResponseBody转化为json串
Map resultMap = new HashMap<>();
resultMap.put("error", 0);
resultMap.put("url", url);
return resultMap;
}catch (Exception e) {
e.printStackTrace();
Map resultMap = new HashMap<>();
resultMap.put("error", 0);
resultMap.put("message", "图片上传失败");
return resultMap;
}
}
}