tinymce上传图片java版本前后台
时间: 2023-08-30 20:12:16 浏览: 55
TinyMCE 是一款非常流行的富文本编辑器,可以方便地实现图片上传功能。下面是一个使用 Java 后台实现 TinyMCE 图片上传的示例。
前端代码:
```html
<textarea id="editor"></textarea>
<script src="//cdn.tiny.cloud/1/no-api-key/tinymce/5/tinymce.min.js"></script>
<script>
tinymce.init({
selector: '#editor',
plugins: 'image',
toolbar: 'image',
images_upload_url: '/upload',
images_upload_handler: function (blobInfo, success, failure) {
var xhr, formData;
xhr = new XMLHttpRequest();
xhr.withCredentials = false;
xhr.open('POST', '/upload');
xhr.onload = function() {
var json;
if (xhr.status != 200) {
failure('HTTP Error: ' + xhr.status);
return;
}
json = JSON.parse(xhr.responseText);
if (!json || typeof json.location != 'string') {
failure('Invalid JSON: ' + xhr.responseText);
return;
}
success(json.location);
};
formData = new FormData();
formData.append('file', blobInfo.blob(), blobInfo.filename());
xhr.send(formData);
}
});
</script>
```
后台代码:
```java
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.UUID;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import org.json.JSONObject;
@WebServlet("/upload")
@MultipartConfig
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
JSONObject json = new JSONObject();
ServletContext context = getServletContext();
String absoluteDiskPath = context.getRealPath("/");
String relativeWebPath = "/upload/";
String absoluteWebPath = absoluteDiskPath + relativeWebPath;
File directory = new File(absoluteWebPath);
if (!directory.exists()) {
directory.mkdir();
}
Part filePart = request.getPart("file");
String fileName = UUID.randomUUID().toString();
Path filePath = Paths.get(absoluteWebPath + fileName);
try (InputStream input = filePart.getInputStream()) {
Files.copy(input, filePath);
} catch (IOException e) {
e.printStackTrace();
}
String fileUrl = request.getRequestURL().toString().replace(request.getRequestURI(), "") + request.getContextPath() + relativeWebPath + fileName;
json.put("location", fileUrl);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(json.toString());
}
}
```
这个示例中,我们使用了 Java Servlet API 中的 `Part` 类来处理上传的文件。在 `doPost` 方法中,我们首先创建了一个上传文件的目录,然后生成一个随机的文件名,将上传文件保存到目录中,并将文件的 URL 返回给前端。
注意,在这个示例中,我们将文件保存到了本地磁盘上。如果你在实际项目中想要将文件保存到云存储中,可以替换其中的保存代码。