1. 程式人生 > >同時增刪改多個附件解決方案

同時增刪改多個附件解決方案

align data 最終 inf file div 異常 臨時 技術

同時增刪改多個附件解決方案

需求描述如下圖:

技術分享圖片

由於同時涉及增刪改、多文件、保存、取消、異常退出、源文件刪除等多種情況,現將實現邏輯梳理如下圖:

技術分享圖片

最終確定方案要點如下(不刪除源文件):

  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移動到目標文件夾。

此方案可以應對各種情況。

同時增刪改多個附件解決方案