Zip上傳和解析的一些思考

2021-10-08 20:21:10 字數 3051 閱讀 5675

需求:

批量匯入商品的;是用zip包的形式;

如下**是上傳zip的業務**,我們在別處呼叫的話直接去呼叫productbatchuploadmanager.productbatchuploadquickly(multipartfile multipartfile)即可;

productuploadquickly(multipartfile multipartfile)方法中分好幾步去執行上傳解析zip中的:

uziputils.readzipcontentbyfilemutifile(multipartfile)去解析zip包,並將該包解析完成的內容放在伺服器的某乙個地方;

checkbatchupload()對解壓完成的內容進行校驗,因為你在校驗完畢之前是不能對該內容進行上傳或者資料庫操作的,所以這一步必須進行業務操作之前進行校驗;

productbatchupload();對解壓完成的內容進行上傳以及資料庫操作;

deletebatchupload(uziputils.out_put_directory);刪除在解析完成後存放在伺服器的臨時檔案

/**

* @author:朱國慶

* @date:2020/7/29 10:33

* @desription: qidian-server-distribution

* @version: 1.0

*/@service

public

class

productbatchuploadmanagerimpl

implements

productbatchuploadmanager

catch

(numberformatexception e)

//去資料庫中查詢,如果spuid不存在,那麼就丟擲異常

queryprodspudobyid

(spunameid);if

(objects.

isnull

(prodspudo)

) file[

] files = filedirectory.

listfiles()

;//該集合用來收集主圖

arraylist

filemain =

newarraylist

<

>()

;for

(file filetooss : files)

if(filetooss.

isfile()

)if(spufilename.

contains

(spuname)

)catch

(exception e)

}catch

(numberformatexception e)

filemain.

add(filetooss);}

else

catch

(numberformatexception e)

queryprodskudobyskuid

(spufilenameid);if

(objects.

isnull

(prodskudo))}

}}if(filemain.

size()

>8)

}}}@override

@transactional

public

void

productbatchupload()

if(filetooss.

isfile()

)else}}

}}}}

}@override

public

void

deletebatchupload

(string path)

else

else

file.

delete()

;}}}

@override

public

synchronized

void

productbatchuploadquickly

(multipartfile multipartfile)

catch

(exception e)

checkbatchupload()

;productbatchupload()

;}catch

(runtimeexception e)

finally

}}

下面**是zip解析工具類

/**

* @author:朱國慶

* @date:2020/7/28 12:27

* @desription: qidian-server-distribution

* @version: 1.0

*/@component

public

class

uziputils

}else

out.

close()

; out = null;

doc = null;

}catch

(exception ex)}}

zipis.

close()

;}catch

(ioexception ioex)

system.out.

println

("finished!");

}public

void

readzipcontentbyfilemutifile

(multipartfile multipartfile)

throws exception

}

回溯的一些思考

堆疊中有元素abcdef,每次出棧可以選擇乙個或者兩個元素棧,當有兩個元素出棧時可以選擇其中乙個重新入棧,當棧為空時,總共有多少種出棧方法?對於本題目的一些思考,對於回溯問題,要記得恢復現場。include include include using namespace std queue vect...

生活的一些思考

這裡只是生活中一些零碎的想法,隨時都有可能飄散而去,在此也只是記錄一下,寫到 算 並無主題。生活,這個凌駕於生存而上的活著。對我來說,這個詞,或許只是心靈上的企及。生存,這個滿足於人的最低基本需求的定義,食能果腹,衣能蔽體,也僅此而已吧。而,在生存之上,我們才會考慮,如何食的更有品味,如何穿的更得體...

索引的一些思考

一 索引是什麼?答 索引是一種資料結構,它和表中的列有對應關係,索引是有序的,但資料的物理排序不一定是按照索引的順序排列的。如果是按照索引排序的,則稱為聚集索引 如果不是,則稱之為非聚集索引。由於聚集索引會影響到資料的物理排序,所以每個表只能有乙個聚集索引,但可以有多個非聚集索引。例子解釋 1 cr...