java和c++哪個(gè)好 前端頁面發(fā)送fromdata,其中文件個(gè)數(shù)不確定的后臺(tái)java怎么接收?
前端頁面發(fā)送fromdata,其中文件個(gè)數(shù)不確定的后臺(tái)java怎么接收?請(qǐng)不請(qǐng)自來。我使用formdata Ajax上載了多個(gè)文件。我不發(fā)布信息安全原因代碼。讓我們簡單談?wù)勥@個(gè)想法2選擇一個(gè)文件后,可
前端頁面發(fā)送fromdata,其中文件個(gè)數(shù)不確定的后臺(tái)java怎么接收?
請(qǐng)不請(qǐng)自來。
我使用formdata Ajax上載了多個(gè)文件。
我不發(fā)布信息安全原因代碼。讓我們簡單談?wù)勥@個(gè)想法
2選擇一個(gè)文件后,可以通過JS將文件保存到一個(gè)對(duì)象中。例如,如果有多個(gè)文件,則該文件應(yīng)為數(shù)組類型。(PS,您可以在輸入中設(shè)置多個(gè)以實(shí)現(xiàn)多個(gè)文件選擇)
3。將文件保存到對(duì)象后,可以將文件放入formdata對(duì)象中數(shù)據(jù).append(“文件[]”,文件)
4。通過Ajax將表單數(shù)據(jù)發(fā)送到后臺(tái)服務(wù)器
5。我用它做背景你需要的是彈簧。您可以直接將請(qǐng)求轉(zhuǎn)換為multipathpservletrequest
multirequest可以通過getfiles方法獲取文件數(shù)組。這樣,后臺(tái)就可以得到所有的文件了
你可以調(diào)用上面的函數(shù)而不是直接在原程序中讀取,而且函數(shù)會(huì)統(tǒng)一讀取行。這樣,無論您有n個(gè)線程還是一個(gè)線程,都不會(huì)重復(fù)讀取行或不完整的讀取行。
為了充分利用多線程,必須將文件劃分為多個(gè)區(qū)域,以便每個(gè)線程讀取。然后我們需要一個(gè)算法來計(jì)算每個(gè)線程的開始和結(jié)束位置。首先,根據(jù)配置的線程數(shù)和文件的總長度,計(jì)算每個(gè)線程的平均分配讀取長度。
但是,由于該文件是純文本文件,因此必須按行處理。如果分割點(diǎn)在一條直線的中間,那么直線數(shù)據(jù)將被分成兩部分,并由兩個(gè)線程同時(shí)處理。這種情況不可能發(fā)生。所以每個(gè)區(qū)域末尾的字符必須是換行符。第一個(gè)區(qū)域的開始位置為0,結(jié)束位置設(shè)置為(文件長度/線程數(shù))。如果結(jié)束位置不是換行符,則只能增加1,直到它成為換行符。