ITPub博客

首页 > IT职业 > IT图书 > Java IOS客户端上传多张图片到服务端

Java IOS客户端上传多张图片到服务端

IT图书 作者:ybbyic 时间:2021-09-09 09:07:17 0 删除 编辑
Java IOS客户端上传多张图片到服务端

业务场景: 用户相册需要上传多张图片到服务器,上限为12张。本文主要介绍Java服务端的文件和流的处理。 下图为iOS端和服务端最终结果一览。
iOS端 :
图片描述
服务端:
图片描述


如图在debug模式下,(MultipartHttpServletRequest) request 接收到的参数为multtipartFiles[]的一个数组。
每一项包括文件名、文件流、和文件大小。这项我们就通过遍历数组然后将文件写入到服务器的文件中,将新文件、文件URL、对应的用户ID 保存到数据库。
图片描述


关于下面的code首先进行一下简要的说明:

BufferedInputStream 和 BufferedOutputStream 流的使用
CommonsMultipartFile类型的文件
对文件拓展名的判断
对文件在服务器存储URL和文件名的处理,我将上传的 原文件名+订单号生成工具+拓展名(.jpg|.png)

/**
        * 上传相册
        *
        * @param photo
        * @return
        */
       @RequestMapping(value = Router.User.COMPLETE_ALBUM_INFORMATION, method = RequestMethod.POST)
       @ResponseBody
       public Response complete_album_information(@RequestParam("userId") int userId,MultipartHttpServletRequest request, HttpServletResponse response) {
             log.info("用户完善基本资料开始");
             Response res = this.getReponse();
             CommonsMultipartFile multipartFile = null;
             BufferedInputStream is = null; 
             BufferedOutputStream out = null;  // 准备好一个输出的对象
             try {
                    Iterator itr =  request.getFileNames();
                    while(itr.hasNext()){
                      String str = itr.next();
                      multipartFile = (CommonsMultipartFile)request.getFile(str);
                      String[] fileExts = {"jpg", "png"};
                      String fileName = multipartFile.getOriginalFilename();   //原文件名
                      String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length());
                      if (Arrays.binarySearch(fileExts, fileExt) != -1) {
                           MultipartFile mpf = request.getFile(str);
                           InputStream inputStream = mpf.getInputStream();
                           is = new BufferedInputStream(inputStream);
                           String url = "D:\programmeTools\nginx-1.12.1\photo" + "/" + str + OrderGeneratedUtils.getOrderNo()  + "." + fileExt;
                           File newFile = new File(url);
                           if(is != null) {
                                  out = new BufferedOutputStream(new FileOutputStream(newFile)); 
                                  byte[] buffer = new byte[1024]; 
                                  int len = -1; 
                                  while ((len = is.read(buffer)) != -1) { 
                                         out.write(buffer, 0, len); 
                                  }
                                  String name = str + OrderGeneratedUtils.getOrderNo() + "." + fileExt;
                                  List albumList = userAlbumService.findByUserId(userId);
                                  if(albumList.size() 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1769/viewspace-2799708/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-15

  • 博文量
    88
  • 访问量
    1019