使用ajax,Jquery,Spring Boot,MultipartFile实现文件上传功能

MultipartFile

方法总结
 byte[] getBytes() 
返回文件的内容作为一个字节数组。
 String getContentType() 
返回文件的内容类型。
 InputStream getInputStream() 
返回InputStream读取文件的内容。
 String getName() 
返回参数的名称多部分的形式。
 String getOriginalFilename() 
返回原来的文件名在客户机的文件系统。
 long getSize() 
返回文件的大小,以字节为单位。
 boolean isEmpty() 
返回是否上传文件是空的,也就是说,没有文件 选择多部分形式或所选的文件中没有的内容。
 void transferTo(File dest) 
接收到的文件转移到给定的目标文件。
方法的细节

getName

字符串 getName()

返回参数的名称多部分的形式。

返回:

参数的名称(没有null或空)


getOriginalFilename

字符串 getOriginalFilename()

返回原来的文件名在客户机的文件系统。

这可能包含路径信息取决于所使用的浏览器, 但它通常不会与任何其他比歌剧。

返回:

原来的文件名,或空字符串如果没有文件 多部分形式的选择


getContentType

字符串 getContentType()

返回文件的内容类型。

返回:

内容类型,或null如果没有定义 (或多部分没有选择文件的形式)


isEmpty

布尔isEmpty()

返回是否上传文件是空的,也就是说,没有文件 选择多部分形式或所选的文件中没有的内容。


getSize

长getSize()

返回文件的大小,以字节为单位。

返回:

文件的大小,如果空或0


getBytes

byte[]getBytes()
抛出IOException

返回文件的内容作为一个字节数组。

返回:

文件的内容作为字节,如果空或空字节数组

抛出:

IOException在访问错误的情况下(如果临时存储失败)


getInputStream

InputStream getInputStream()
抛出IOException

返回InputStream读取文件的内容。 用户负责关闭流。

返回:

文件的内容流,如果空或空流

抛出:

IOException在访问错误的情况下(如果临时存储失败)


transferTo

无效transferTo(文件桌子)
抛出IOException,IllegalStateException

接收到的文件转移到给定的目标文件。

这个可以移动文件的文件系统,复制文件 文件系统,或者内存内容保存到目标文件。 如果目标文件已经存在,它将被删除。

如果文件被移动的文件系统,这个操作不能 再次被调用。 因此,调用这个方法能够仅仅一次 适用于任何存储机制。

参数:

dest——目标文件

抛出:

IOException——在阅读或写作的错误

IllegalStateException如果文件已被移动 在文件系统和不可用了另一个转移

实例:

需求规格:实现上传文件功能,并将上传的文件内容转换成二进制ByteBuffer的形式,作为服务的入参。

使用技术:html,JS,JQuery(miniUI),Ajax,MultipartFile;SpringBoot框架

html代码:

<div>

         <form>

                  <input id = "file"   type="file"   name = "file"/>

                 <div id = "upload"  class="mini-button"  iconCls = "mini-icon-upload">上传</div>

         </form>

</div>

JS代码:

$("#upload").on("click",function(){

     FileUpload();

});

function FileUpload(){

     var formData = new FormData();

     formData.append("files",$("#file")[0].files[0]);

     $.ajax({

           type:"POST",

           url:contextPath+"/XXX/XXX",

           data:formData,

           dataType:"json",

           mimeType:"multipart/form-data",

           cache:false,

           processData:false,

           contentType:false,

           success:function(data){

                   if(11 === data.status){

                              alert("导入成功");

                    }else{

                              alert("导入失败");

                    }

          }

     });

}

java代码:

@Autowired

DHGHXLDRConfig dhghxldrConfig;

@RequestMapping("/getFileToByte")

@ResponseBody

public Object getFileToByte(@RequestParam(value="files",required=false) MultipartFile multipartFile,HttpServletRequest  request)

{

       String realpath = "";

       String name = "";

       if(multipartFile  !=  null){

              long size = multipartFile.getSize();

             if(size > 100*1024){

                     JsonResult.errorException("");

             }

             name = multipartFile.getOriginalFilename();

             String subffix = name.substring(name.lastIndexOf(".")+1,name.length());

             String filePath = dhghxldrConfig.getXlfilePath();

             File file = new File(filePath,name);

             byte[] by = new byte[(int)file.length()];

            try{

                      FileInputStream inputStream = new FileInputStream(file);

                      ByteArrayOutputStream byteStream = new ByteArrayOutputStream();

                      byte[] bb = new byte[2048];

                      int ch;

                      ch = inputStream.read(bb);

                      while(ch != -1){

                             bytestream.write(bb,0,ch);

                             ch = inputStream.read(bb);

                      }

                      by = bytestream.toByteArray();

                      buffer = ByteBuffer.wrap(by);

                      //根据业务调接口,传参数

                }catch(FileNotFoundException e){

                       e.printStackTrace();

                }catch(IOException e){

                       e.printStackTrace();

                }catch(TException e){

                       e.printStackTrace();

                }

                return JsonResult.ok("");

       }

       return JsonResult.errorExcption("");

}

JsonResult代码:

public class JsonResult {

private static final int STATUS_OK = 11;

private static final int STATUS_EXCEPTION = 22;

private static final int STATUS_OTHER = 33;

private int status;

private String tips;

private Object content;

private JsonResult(int status,String tips,Object content){

this.status = status;

this.tips = tips;

this.content = content;

}

public int getStatus() {

return status;

}

public void setStatus(int status) {

this.status = status;

}

public String getTips() {

return tips;

}

public void setTips(String tips) {

this.tips = tips;

}

public Object getContent() {

return content;

}

public void setContent(Object content) {

this.content = content;

}

public static int getStatusOk() {

return STATUS_OK;

}

public static int getStatusException() {

return STATUS_EXCEPTION;

}

public static int getStatusOther() {

return STATUS_OTHER;

}

public static JsonResult errorExceptoin(String errMessage){

return new JsonResult(STATUS_EXCEPTION,errMessage,null);

}

public static JsonResult ok(Object content){ return new JsonResult(STATUS_OK,"SUCCESS",content);}

public static JsonResult other(String otherMessage){return new JsonResult(STATUS_OTHER,otherMessage,null);}

}

DHGHXLDRConfig代码:

@Configuration

public class DHGHXLDRConfig{

     @Value("${dhgh.xlfile}")

     private String getXlfilePath(){

         return xlfilePath;

    }

    public String getXlfilePath(){

        return xlfilePath;

   }

   public void setXlfilePath(String xlfilePath){

        this.xlfilePath = xlfilePath;

  }

}

application.yml需要添加内容:(不在yml里添加上传大小,会使用框架默认值,可能会一起报错,文件过大:)

org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException

Spring:

   servlet:

     multipart:

         max-file-size:100Mb

         max-request-size:100Mb

dddd:

   xlfile:D:/XXX/XXX/XXX

参考文档:https://www.cnblogs.com/chenhonggao/p/8994598.html

学习博客:https://blog.csdn.net/zhaoxiang10052111/article/details/79899284

猜你喜欢

转载自blog.csdn.net/coding_1994/article/details/85122562