zoukankan      html  css  js  c++  java
  • 同时增删改多个附件解决方案

    同时增删改多个附件解决方案

    需求描述如下图:

     

    由于同时涉及增删改、多文件、保存、取消、异常退出、源文件删除等多种情况,现将实现逻辑梳理如下图:

     

    最终确定方案要点如下(不删除源文件):

    1. 进入修改页后,前端获取并保存初始附件数据,如下:
      let sourceData = {
          file1:'test1.jpg',
          file2:'test2.png',
          file3:'test3.pdf',
          file4:'test4.pdf',
          file5:'',
      }
    2. 用户点击保存按钮前,可做任何操作,前端按要求记录每次操作结果:
      删除:例如删除file1sourceData改为:
      sourceData = {
          file1:'',
          file2:'test2.png',
          file3:'test3.pdf',
          file4:'test4.pdf',
          file5:'',
      }
      修改:例如file2改为test6.png,先调用upload接口将test6.png传到服务器,服务器接收到文件后会将文件存入临时文件路径/tmp,前端接收返回的文件名后sourceData改为:
      sourceData = {
          file1:'',
          file2:'test6.png',
          file3:'test3.pdf',
          file4:'test4.pdf',
          file5:'',
      }
      增加:例如增加file5test7.pdf,先调用upload接口将test6.png传到服务器,服务器接收到文件后会将文件存入临时文件路径/tmp,前端接收返回的文件名后sourceData改为:
      sourceData = {
          file1:'',
          file2:'test6.png',
          file3:'test3.pdf',
          file4:'test4.pdf',
          file5:'test7.pdf',
      }
    3. 用户点击保存,将最终sourceData值传给后端即可。
    4. 后端将接收的sourceData值与数据库对应值比对:
      相同则不做操作。不同则做真正的增删改操作,其中增和改需将文件从/tmp移动到目标文件夹。

    此方案可以应对各种情况。

    查资料不过是偏门,撸源码才是脱离苦海的正道。
  • 相关阅读:
    Angular JS 中的内置方法之$watch
    Angular JS 中 指令详解
    Angular JS 中 ng-controller 值复制和引用复制
    git 使用技巧
    itextpdf 解析带中文的html问题
    详解Java 8中Stream类型的“懒”加载
    JSP网页处理过程
    [Java 8] (10) 使用Lambda完成函数组合,Map-Reduce以及并行化
    深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)
    Android:联系人Contacts之ContentResolver query 参数详解
  • 原文地址:https://www.cnblogs.com/jarvisjin/p/8406935.html
Copyright © 2011-2022 走看看