Преглед изворни кода

Merge branch 'fix/im_ws_upload_bug' into 'develop'

修复上传文件的bug

See merge request o2oa/o2oa!731
楼国栋 пре 5 година
родитељ
комит
710d6431ab

+ 11 - 4
o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/jaxrs/im/ActionUploadFile.java

@@ -4,6 +4,7 @@ import com.x.base.core.container.EntityManagerContainer;
 import com.x.base.core.container.factory.EntityManagerContainerFactory;
 import com.x.base.core.container.factory.EntityManagerContainerFactory;
 import com.x.base.core.entity.annotation.CheckPersistType;
 import com.x.base.core.entity.annotation.CheckPersistType;
 import com.x.base.core.project.config.StorageMapping;
 import com.x.base.core.project.config.StorageMapping;
+import com.x.base.core.project.exception.PromptException;
 import com.x.base.core.project.http.ActionResult;
 import com.x.base.core.project.http.ActionResult;
 import com.x.base.core.project.http.EffectivePerson;
 import com.x.base.core.project.http.EffectivePerson;
 import com.x.base.core.project.jaxrs.WoId;
 import com.x.base.core.project.jaxrs.WoId;
@@ -22,7 +23,7 @@ import java.util.Date;
  */
  */
 public class ActionUploadFile extends BaseAction {
 public class ActionUploadFile extends BaseAction {
 
 
-    public ActionResult<Wo> execute(EffectivePerson effectivePerson, String conversationId, String type, byte[] bytes,
+    public ActionResult<Wo> execute(EffectivePerson effectivePerson, String conversationId, String type, String fileName, byte[] bytes,
                                     FormDataContentDisposition disposition) throws Exception {
                                     FormDataContentDisposition disposition) throws Exception {
         try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
         try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
             ActionResult<Wo> result = new ActionResult<>();
             ActionResult<Wo> result = new ActionResult<>();
@@ -31,13 +32,19 @@ public class ActionUploadFile extends BaseAction {
                 throw new ExceptionAllocateStorageMaaping();
                 throw new ExceptionAllocateStorageMaaping();
             }
             }
 
 
-            String fileName = "";
             /** 文件名编码转换 */
             /** 文件名编码转换 */
             if (StringUtils.isEmpty(fileName)) {
             if (StringUtils.isEmpty(fileName)) {
-                fileName = new String(disposition.getFileName().getBytes(DefaultCharset.charset_iso_8859_1),
-                        DefaultCharset.charset);
+                try {
+                    fileName = new String(disposition.getFileName().getBytes(DefaultCharset.charset_iso_8859_1),
+                            DefaultCharset.charset);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
             }
             }
             fileName = FilenameUtils.getName(fileName);
             fileName = FilenameUtils.getName(fileName);
+            if (StringUtils.isEmpty(fileName)) {
+                throw new ExceptionFileNameEmpty();
+            }
             /** 禁止不带扩展名的文件上传 */
             /** 禁止不带扩展名的文件上传 */
             if (StringUtils.isEmpty(FilenameUtils.getExtension(fileName))) {
             if (StringUtils.isEmpty(FilenameUtils.getExtension(fileName))) {
                 throw new ExceptionEmptyExtension(fileName);
                 throw new ExceptionEmptyExtension(fileName);

+ 12 - 0
o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/jaxrs/im/ExceptionFileNameEmpty.java

@@ -0,0 +1,12 @@
+package com.x.message.assemble.communicate.jaxrs.im;
+
+import com.x.base.core.project.exception.PromptException;
+
+class ExceptionFileNameEmpty extends PromptException {
+
+	private static final long serialVersionUID = 7750207007061165350L;
+
+	ExceptionFileNameEmpty() {
+		super("文件名称不能为空");
+	}
+}

+ 2 - 1
o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/jaxrs/im/ImAction.java

@@ -199,12 +199,13 @@ public class ImAction extends StandardJaxrsAction {
     public void uploadFile(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
     public void uploadFile(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
                            @JaxrsParameterDescribe("会话id") @PathParam("conversationId") String conversationId,
                            @JaxrsParameterDescribe("会话id") @PathParam("conversationId") String conversationId,
                            @JaxrsParameterDescribe("文件类型") @PathParam("type") String type,
                            @JaxrsParameterDescribe("文件类型") @PathParam("type") String type,
+                           @JaxrsParameterDescribe("附件名称") @FormDataParam(FILENAME_FIELD) String fileName,
                            @JaxrsParameterDescribe("附件标识") @FormDataParam(FILE_FIELD) final byte[] bytes,
                            @JaxrsParameterDescribe("附件标识") @FormDataParam(FILE_FIELD) final byte[] bytes,
                            @JaxrsParameterDescribe("上传文件") @FormDataParam(FILE_FIELD) final FormDataContentDisposition disposition){
                            @JaxrsParameterDescribe("上传文件") @FormDataParam(FILE_FIELD) final FormDataContentDisposition disposition){
         ActionResult<ActionUploadFile.Wo> result = new ActionResult<>();
         ActionResult<ActionUploadFile.Wo> result = new ActionResult<>();
         EffectivePerson effectivePerson = this.effectivePerson(request);
         EffectivePerson effectivePerson = this.effectivePerson(request);
         try {
         try {
-            result = new ActionUploadFile().execute(effectivePerson, conversationId, type, bytes, disposition);
+            result = new ActionUploadFile().execute(effectivePerson, conversationId, type, fileName, bytes, disposition);
         } catch (Exception e) {
         } catch (Exception e) {
             logger.error(e, effectivePerson, request, null);
             logger.error(e, effectivePerson, request, null);
             result.error(e);
             result.error(e);