当前位置:网站首页>Ckeditor 4.10.1 upload pictures to prompt "incorrect server response" problem solution
Ckeditor 4.10.1 upload pictures to prompt "incorrect server response" problem solution
2022-07-02 09:37:00 【niceyz】
Recent projects have adopted CKEditor 4 Rich text editor , Prompt when uploading pictures " Incorrect server response " , Check the official documents and ask to return json Format , The official sample :
Response: File Uploaded Successfully
Upload successful return :
{
"uploaded": 1,
"fileName": "foo.jpg",
"url": "/files/foo.jpg"
}
{
"uploaded": 1,
"fileName": "foo(2).jpg",
"url": "/files/foo(2).jpg",
"error": {
"message": "A file with the same name already exists. The uploaded file was renamed to \"foo(2).jpg\"."
}
}
Response: File Could Not Be Uploaded
Upload Failure Return :
{
"uploaded": 0,
"error": {
"message": "The file is too big."
}
}
Address :https://ckeditor.com/docs/ckeditor4/latest/guide/dev_file_upload.html
Encapsulate return code :
import java.util.HashMap;
import java.util.Map;
/**
* @description: CKEditor The editor uploads the picture and returns the format
* @author: yz
* @create: 2018/8/16 18:31
*/
public class FileResponse extends HashMap<String, Object> {
Map<String,Object> msgMap = new HashMap<>();
public String error(int code, String msg){
FileResponse result = new FileResponse();
msgMap.put("message",msg);
result.put("uploaded",code);
result.put("error",msgMap);
return JSONUtils.beanToJson(result);
}
public String success(int code, String fileName,String url,String msg){
FileResponse result = new FileResponse();
if(!StringUtils.isEmpty(msg)){
msgMap.put("message",msg);
result.put("error",msgMap);
}
result.put("uploaded",code);
result.put("fileName",fileName);
result.put("url",url);
return JSONUtils.beanToJson(result);
}
}Upload code :
import com.yz.common.utils.FileResponse;
import com.yz.common.utils.FileUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @description: Image upload
* @author: yz
* @create: 2018/8/16 11:09
*/
@Controller
@RequestMapping("/common")
public class FileUploadController {
/*
* Picture naming format
*/
private static final String DEFAULT_SUB_FOLDER_FORMAT_AUTO = "yyyyMMddHHmmss";
private final Logger logger = LoggerFactory.getLogger(this.getClass());
/*
* Upload picture folder
*/
private static final String UPLOAD_PATH = "/upload/yzimg/";
/*
* To upload pictures
*/
@RequestMapping("/uploadImg")
public void uplodaImg(@RequestParam("upload") MultipartFile file,HttpServletRequest request,HttpServletResponse response) {
FileResponse fileResponse = new FileResponse();
try {
PrintWriter out = response.getWriter();
logger.info("fileSize: "+file.getSize());
// The size of the picture does not exceed 500K
if (file.getSize() > 1024*500) {
String error = fileResponse.error(0, " The picture size exceeds 500K");
out.println(error);
return;
}
String proPath = request.getSession().getServletContext().getRealPath("/");
String proName = request.getContextPath();
String path = proPath + UPLOAD_PATH;
String fileName = file.getOriginalFilename();
String uploadContentType = file.getContentType();
String expandedName = "";
if (uploadContentType.equals("image/pjpeg") || uploadContentType.equals("image/jpeg")) {
expandedName = ".jpg";
} else if (uploadContentType.equals("image/png") || uploadContentType.equals("image/x-png")) {
expandedName = ".png";
} else if (uploadContentType.equals("image/gif")) {
expandedName = ".gif";
} else if (uploadContentType.equals("image/bmp")) {
expandedName = ".bmp";
} else {
String error = fileResponse.error(0, " The file format is not correct ( It has to be for .jpg/.gif/.bmp/.png file )");
out.println(error);
return;
}
DateFormat df = new SimpleDateFormat(DEFAULT_SUB_FOLDER_FORMAT_AUTO);
fileName = df.format(new Date()) + expandedName;
FileUtil.uploadFile(file.getBytes(), path, fileName);
String success = fileResponse.success(1, fileName, proName + "/upload/hximg/" + fileName, null);
out.println(success);
return;
} catch (Exception e) {
e.printStackTrace();
String error = fileResponse.error(0, " System exception ");
try {
response.getWriter().println(error);
return;
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}import java.io.File;
import java.io.FileOutputStream;
import java.util.UUID;
public class FileUtil {
public static void uploadFile(byte[] file, String filePath, String fileName) throws Exception {
File targetFile = new File(filePath);
if (!targetFile.exists()) {
targetFile.mkdirs();
}
FileOutputStream out = new FileOutputStream(filePath + fileName);
out.write(file);
out.flush();
out.close();
}
public static boolean deleteFile(String fileName) {
File file = new File(fileName);
// If the file corresponding to the file path exists , And it's a file , Then delete
if (file.exists() && file.isFile()) {
if (file.delete()) {
return true;
} else {
return false;
}
} else {
return false;
}
}
public static String renameToUUID(String fileName) {
return UUID.randomUUID() + "." + fileName.substring(fileName.lastIndexOf(".") + 1);
}
}边栏推荐
- 告别996,IDEA中必装插件有哪些?
- Read 30 minutes before going to bed every day_ day3_ Files
- Chrome browser plug-in fatkun installation and introduction
- Chrome用户脚本管理器-Tampermonkey 油猴
- 破茧|一文说透什么是真正的云原生
- 三相逆变器离网控制——PR控制
- Operation and application of stack and queue
- Microservice practice | declarative service invocation openfeign practice
- 微服务实战|熔断器Hystrix初体验
- Elastic Stack之Beats(Filebeat、Metricbeat)、Kibana、Logstash教程
猜你喜欢

Elastic Stack之Beats(Filebeat、Metricbeat)、Kibana、Logstash教程

A detailed explanation takes you to reproduce the statistical learning method again -- Chapter 2, perceptron model

Matplotlib swordsman - a stylist who can draw without tools and code

zk配置中心---Config Toolkit配置与使用

web安全与防御

每天睡觉前30分钟阅读_day4_Files

Chrome浏览器标签管理插件–OneTab

Don't look for it. All the necessary plug-ins for Chrome browser are here

kinect dk 获取CV::Mat格式的彩色RGB图像(openpose中使用)

idea查看字节码配置
随机推荐
How to choose between efficiency and correctness of these three implementation methods of distributed locks?
Typora安装包分享
YOLO物体识别,生成数据用到的工具
Operation and application of stack and queue
Methods of classfile
From concept to method, the statistical learning method -- Chapter 3, k-nearest neighbor method
定时线程池实现请求合并
Learn combinelatest through a practical example
QT QLabel样式设置
深入剖析JVM是如何执行Hello World的
[go practical basis] how to verify request parameters in gin
View the port of the application published by was
保存视频 opencv::VideoWriter
Microservice practice | fuse hytrix initial experience
Ora-12514 problem solving method
[go practical basis] gin efficient artifact, how to bind parameters to structures
Chrome user script manager tempermonkey monkey
Chrome browser tag management plug-in – onetab
逆变器simulink模型——处理器在环测试(PIL)
Required request body is missing:(跨域问题)