SpringMVC图片上传(使用kindeditor图片上传插件和FastDFS分布式文件系统)

 

//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为工具类

package cn.itcats;

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);

	}

}

 

 

 

 

 

package cn.itcats;

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;
	        }
        }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值