From fc9cc01a6aee8ce7387a2269e88047988d9e7cff Mon Sep 17 00:00:00 2001 From: o2sword <171715986@qq.com> Date: Mon, 7 Mar 2022 10:51:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=91=E6=96=87=E4=BB=B6=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8C=BF=E5=90=8D=E5=8F=AF=E6=9F=A5=E7=9C=8B?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../control/jaxrs/ActionApplication.java | 2 + .../jaxrs/FileAnonymousJaxrsFilter.java | 15 +++ .../jaxrs/file/FileAnonymousAction.java | 104 ++++++++++++++++++ 3 files changed, 121 insertions(+) create mode 100644 o2server/x_file_assemble_control/src/main/java/com/x/file/assemble/control/jaxrs/FileAnonymousJaxrsFilter.java create mode 100644 o2server/x_file_assemble_control/src/main/java/com/x/file/assemble/control/jaxrs/file/FileAnonymousAction.java diff --git a/o2server/x_file_assemble_control/src/main/java/com/x/file/assemble/control/jaxrs/ActionApplication.java b/o2server/x_file_assemble_control/src/main/java/com/x/file/assemble/control/jaxrs/ActionApplication.java index 1b95de771d..7ad5b839f5 100644 --- a/o2server/x_file_assemble_control/src/main/java/com/x/file/assemble/control/jaxrs/ActionApplication.java +++ b/o2server/x_file_assemble_control/src/main/java/com/x/file/assemble/control/jaxrs/ActionApplication.java @@ -11,6 +11,7 @@ import com.x.file.assemble.control.jaxrs.complex.ComplexAction; import com.x.file.assemble.control.jaxrs.config.ConfigAction; import com.x.file.assemble.control.jaxrs.editor.EditorAction; import com.x.file.assemble.control.jaxrs.file.FileAction; +import com.x.file.assemble.control.jaxrs.file.FileAnonymousAction; import com.x.file.assemble.control.jaxrs.folder.FolderAction; import com.x.file.assemble.control.jaxrs.folder2.Folder2Action; import com.x.file.assemble.control.jaxrs.recycle.RecycleAction; @@ -30,6 +31,7 @@ public class ActionApplication extends AbstractActionApplication { classes.add(EditorAction.class); classes.add(FileAction.class); classes.add(ConfigAction.class); + classes.add(FileAnonymousAction.class); return classes; } diff --git a/o2server/x_file_assemble_control/src/main/java/com/x/file/assemble/control/jaxrs/FileAnonymousJaxrsFilter.java b/o2server/x_file_assemble_control/src/main/java/com/x/file/assemble/control/jaxrs/FileAnonymousJaxrsFilter.java new file mode 100644 index 0000000000..2bb398f292 --- /dev/null +++ b/o2server/x_file_assemble_control/src/main/java/com/x/file/assemble/control/jaxrs/FileAnonymousJaxrsFilter.java @@ -0,0 +1,15 @@ +package com.x.file.assemble.control.jaxrs; + +import com.x.base.core.project.jaxrs.AnonymousCipherManagerUserJaxrsFilter; + +import javax.servlet.annotation.WebFilter; + +/** + * @author sword + */ +@WebFilter(urlPatterns = { + "/jaxrs/anonymous/*", + }, asyncSupported = true ) +public class FileAnonymousJaxrsFilter extends AnonymousCipherManagerUserJaxrsFilter { + +} diff --git a/o2server/x_file_assemble_control/src/main/java/com/x/file/assemble/control/jaxrs/file/FileAnonymousAction.java b/o2server/x_file_assemble_control/src/main/java/com/x/file/assemble/control/jaxrs/file/FileAnonymousAction.java new file mode 100644 index 0000000000..86cf6068e2 --- /dev/null +++ b/o2server/x_file_assemble_control/src/main/java/com/x/file/assemble/control/jaxrs/file/FileAnonymousAction.java @@ -0,0 +1,104 @@ +package com.x.file.assemble.control.jaxrs.file; + +import com.google.gson.JsonElement; +import com.x.base.core.project.annotation.JaxrsDescribe; +import com.x.base.core.project.annotation.JaxrsMethodDescribe; +import com.x.base.core.project.annotation.JaxrsParameterDescribe; +import com.x.base.core.project.http.ActionResult; +import com.x.base.core.project.http.EffectivePerson; +import com.x.base.core.project.http.HttpMediaType; +import com.x.base.core.project.jaxrs.ResponseFactory; +import com.x.base.core.project.jaxrs.StandardJaxrsAction; +import com.x.base.core.project.logger.Logger; +import com.x.base.core.project.logger.LoggerFactory; +import com.x.file.core.entity.open.ReferenceType; +import org.glassfish.jersey.media.multipart.FormDataContentDisposition; +import org.glassfish.jersey.media.multipart.FormDataParam; + +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.*; +import javax.ws.rs.container.AsyncResponse; +import javax.ws.rs.container.Suspended; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.List; + +/** + * @author sword + */ +@Path("anonymous/file") +@JaxrsDescribe("File操作") +public class FileAnonymousAction extends StandardJaxrsAction { + + private static Logger logger = LoggerFactory.getLogger(FileAnonymousAction.class); + + @JaxrsMethodDescribe(value = "下载文件,以附件方式,不输出contentType头.", action = ActionDownloadStream.class) + @GET + @Path("{id}/download/stream") + @Consumes(MediaType.APPLICATION_JSON) + public void downloadStream(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, + @JaxrsParameterDescribe("文件标识") @PathParam("id") String id) { + ActionResult result = new ActionResult<>(); + EffectivePerson effectivePerson = this.effectivePerson(request); + try { + result = new ActionDownloadStream().execute(effectivePerson, id); + } catch (Exception e) { + logger.error(e, effectivePerson, request, null); + result.error(e); + } + asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result)); + } + + @JaxrsMethodDescribe(value = "下载文件,输出contentType头.", action = ActionDownload.class) + @GET + @Path("{id}/download") + @Consumes(MediaType.APPLICATION_JSON) + public void download(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, + @JaxrsParameterDescribe("文件标识") @PathParam("id") String id) { + ActionResult result = new ActionResult<>(); + EffectivePerson effectivePerson = this.effectivePerson(request); + try { + result = new ActionDownload().execute(effectivePerson, id); + } catch (Exception e) { + logger.error(e, effectivePerson, request, null); + result.error(e); + } + asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result)); + } + + /** 为IOS访问单独增加的方法 */ + @JaxrsMethodDescribe(value = "下载文件,以附件方式,不输出contentType头,使用POST方法访问.", action = ActionDownloadStream.class) + @POST + @Path("{id}/download/stream") + @Consumes(MediaType.APPLICATION_JSON) + public void postDownloadStream(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, + @JaxrsParameterDescribe("文件标识") @PathParam("id") String id, JsonElement jsonElement) { + ActionResult result = new ActionResult<>(); + EffectivePerson effectivePerson = this.effectivePerson(request); + try { + result = new ActionDownloadStream().execute(effectivePerson, id); + } catch (Exception e) { + logger.error(e, effectivePerson, request, jsonElement); + result.error(e); + } + asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result)); + } + + /** 为IOS访问单独增加的方法 */ + @JaxrsMethodDescribe(value = "下载文件,输出contentType头,使用POST方法访问.", action = ActionDownload.class) + @POST + @Path("{id}/download") + @Consumes(MediaType.APPLICATION_JSON) + public void postDownload(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, + @JaxrsParameterDescribe("文件标识") @PathParam("id") String id, JsonElement jsonElement) { + ActionResult result = new ActionResult<>(); + EffectivePerson effectivePerson = this.effectivePerson(request); + try { + result = new ActionDownload().execute(effectivePerson, id); + } catch (Exception e) { + logger.error(e, effectivePerson, request, jsonElement); + result.error(e); + } + asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result)); + } +} -- GitLab