当前位置:网站首页>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);
}
}边栏推荐
- VIM操作命令大全
- C语言之最小数
- 道阻且长,行则将至
- 互联网API接口幂等设计
- TD联合Modelsim进行功能仿真
- Chrome user script manager tempermonkey monkey
- Required request body is missing: (cross domain problem)
- [go practical basis] how to customize and use a middleware in gin
- zk配置中心---Config Toolkit配置与使用
- Typeerror: X () got multiple values for argument 'y‘
猜你喜欢

微服务实战|熔断器Hystrix初体验

Navicat 远程连接Mysql报错1045 - Access denied for user ‘root‘@‘222.173.220.236‘ (using password: YES)

图像识别-数据采集

web安全与防御

Watermelon book -- Chapter 5 neural network

Required request body is missing:(跨域问题)

三相并网逆变器PI控制——离网模式

Insight into cloud native | microservices and microservice architecture

Mysql 多列IN操作

How to use PHP spoole to implement millisecond scheduled tasks
随机推荐
数构(C语言--代码有注释)——第二章、线性表(更新版)
Required request body is missing:(跨域问题)
DTM distributed transaction manager PHP collaboration client V0.1 beta release!!!
攻防世界-Web进阶区-unserialize3
VIM operation command Encyclopedia
Knowledge points are very detailed (code is annotated) number structure (C language) -- Chapter 3, stack and queue
zk配置中心---Config Toolkit配置与使用
Oracle modify database character set
Redis installation and deployment (windows/linux)
Watermelon book -- Chapter 6 Support vector machine (SVM)
C语言之二进制与十进制
Operation and application of stack and queue
Creation and jump of activity
Microservice practice | fuse hytrix initial experience
Thinkphp5 how to determine whether a table exists
Typora installation package sharing
Matplotlib swordsman - a stylist who can draw without tools and code
Solution to amq4036 error in remote connection to IBM MQ
Chrome browser tag management plug-in – onetab
分享一篇博客(水一篇博客)