KindEditor 的图片上传插件, 对浏览器兼容性不好.
使用 @ResponseBody 注解返回 java 对象,
Content-Type:application/JSON;charset=UTF-8
应该让其返回
在 camel-dspt-common 添加工具类 JsonUtils.java
- package com.camel.common.utils;
- import java.util.List;
- import com.fasterxml.jackson.core.JsonProcessingException;
- import com.fasterxml.jackson.databind.JavaType;
- import com.fasterxml.jackson.databind.JsonNode;
- import com.fasterxml.jackson.databind.ObjectMapper;
- /**
- * 淘淘商城自定义响应结构
- */
- public class JsonUtils {
- // 定义 jackson 对象
- private static final ObjectMapper MAPPER = new ObjectMapper();
- /**
- * 将对象转换成 JSON 字符串.
- * <p>Title: pojoToJson</p>
- * <p>Description: </p>
- * @param data
- * @return
- */
- public static String objectToJson(Object data) {
- try {
- String string = MAPPER.writeValueAsString(data);
- return string;
- } catch (JsonProcessingException e) {
- e.printStackTrace();
- }
- return null;
- }
- /**
- * 将 JSON 结果集转化为对象
- *
- * @param jsonData JSON 数据
- * @param clazz 对象中的 object 类型
- * @return
- */
- public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {
- try {
- T t = MAPPER.readValue(jsonData, beanType);
- return t;
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
- /**
- * 将 JSON 数据转换成 pojo 对象 list
- * <p>Title: jsonToList</p>
- * <p>Description: </p>
- * @param jsonData
- * @param beanType
- * @return
- */
- public static <T>List<T> jsonToList(String jsonData, Class<T> beanType) {
- JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
- try {
- List<T> list = MAPPER.readValue(jsonData, javaType);
- return list;
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
- }
返回字符串时:
Content-Type:text/plain;charset=UTF-8
image.PNG
指定响应结果的 content-type:
image.PNG
KindEditor 的多图片上传插件最后响应的 content-type 是 text/plan 格式的 JSON 字符串. 兼容性是最好的.
image.PNG
- package com.camel.controller;
- import java.awt.PageAttributes.MediaType;
- 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 com.camel.common.utils.FastDFSClient;
- import com.camel.common.utils.JsonUtils;
- @Controller
- public class PictureController {
- @Value("${IMAGE_SERVER_URL}")
- private String IMAGE_SERVER_URL;
- @RequestMapping(value="/pic/upload",produces=org.springframework.http.MediaType.TEXT_PLAIN_VALUE+";charset=utf-8")
- @ResponseBody
- public String fileUpload(MultipartFile uploadFile){
- try {
- //1, 取文件的扩展名
- String originalFilename = uploadFile.getOriginalFilename();
- String extName = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
- //2, 创建一个 FastDFS 的客户端
- FastDFSClient fastDFSClient = new FastDFSClient("classpath:conf/client.conf");
- //3, 执行上传处理
- String path = fastDFSClient.uploadFile(uploadFile.getBytes(), extName);
- //4, 拼接返回的 url 和 ip 地址, 拼装成完整的 url
- String url = IMAGE_SERVER_URL + path;
- //5, 返回 map
- Map result = new HashMap<>();
- result.put("error", 0);
- result.put("url", url);
- return JsonUtils.objectToJson(result);
- } catch (Exception e) {
- e.printStackTrace();
- //5, 返回 map
- Map result = new HashMap<>();
- result.put("error", 1);
- result.put("message", "图片上传失败");
- return JsonUtils.objectToJson(result);
- }
- }
- }
来源: http://www.jianshu.com/p/87194634a6b5