[ASP]使用 xmlhttp 分塊上傳文件
發(fā)表時(shí)間:2023-08-17 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]編寫思路:把本地文件在客戶端通過base64編碼以后發(fā)送目的地.測試過程中,上傳文件過大,導(dǎo)致超時(shí)不成功.后來經(jīng)過改善.把編碼分段發(fā)送.測試20M成功編寫目的:在傳統(tǒng)的解決方案里面,一次一次選取上傳...
編寫思路:把本地文件在客戶端通過base64編碼以后發(fā)送目的地.
測試過程中,上傳文件過大,導(dǎo)致超時(shí)不成功.
后來經(jīng)過改善.把編碼分段發(fā)送.測試20M成功
編寫目的:在傳統(tǒng)的解決方案里面,一次一次選取上傳可以.但是在碰到把數(shù)據(jù)庫里文件路徑讀出來,并把這些文件上傳到一個(gè)地方的時(shí)候就比較麻煩.
如果得到路徑一個(gè)一個(gè)去找到用ftp當(dāng)然也是可以的,但每次找這些文件我看都會(huì)比較費(fèi)時(shí)。這里編寫這個(gè)主要就是為了通過數(shù)據(jù)庫里的文件路徑取得文件.把文件一次批量上傳到一個(gè)地方.
其主要目的還是為了鍛煉一下自己.
解決過程:起初試著用模擬鍵盤輸入強(qiáng)行賦值給file控件用傳統(tǒng)的方法上傳。可是老碰到空值的情況,以至有很多文件沒有發(fā)送出去。查閱一些資料,現(xiàn)在是把所有路徑通過數(shù)據(jù)庫取到然后寫到一個(gè)js里。然后在前臺(tái)用js讀取這些路徑,通過xmlhttp來發(fā)送文件。
因?yàn)閕e不太喜歡xmlHttp.總認(rèn)為他有惡意行為.所以老談出提示警告.所以操作的時(shí)候不能使用web路徑.只能用物理路徑去訪問它.
然后服務(wù)端有一文件來接收這些編碼,并對(duì)其進(jìn)行解碼.所以我稱之為"c/s". ^_^
目前很多代碼還在完善中.
簡單介紹一下:
aryFiles.push("c:\\aaa.zip") ;
aryFiles.push("c:\\bbb.exe") ;這里為文件路徑和文件.可為多個(gè)
以后這個(gè)路徑也可以通過file控件在客戶端取到
http://
www.xxx.com/xxx/xxx.asp這個(gè)是目的地,可以改為自己想要的地址.
ado_stream.LoadFromFile(server.mappath(".") &"/"& + str_filename)
server.mappath(".") &"/"& + str_filename 這里是讀取文件.
server.mappath(".") &"/"& 路徑和存放路徑一致
ado_stream.SaveToFile server.mappath(".") &"/"& str_filename,2
server.mappath(".") &"/"& 這個(gè)為存放文件的路徑. str_filename 為文件名這里讀取和存放都是放在程序所放目錄中.大家測試的時(shí)候也可以保持這樣即可把第一段代碼放到本地(eg:c:\upload.htm)
把第二段代碼放到服務(wù)器上,可以是本地服務(wù)器,可以是公網(wǎng)服務(wù)器.和上面的目的地保持一致
(eg:http://www.xxx.com/upload.asp or http:// localhost/www/upload.asp)
操作:找到第一段代碼保存的地方。執(zhí)行即可(eg:打開c盤執(zhí)行upload.htm)
目前程序還在調(diào)試過程中,希望大家提出寶貴意見客戶端代碼 [Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運(yùn)行]服務(wù)端代碼 [Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運(yùn)行]另外:此文的目的并不是說這個(gè)程序能給朋友們解決什么問題,主要目的還是為了和大家交流一些心得:
碰到問題->發(fā)現(xiàn)問題->解決問題.
希望大家都不要成為一個(gè)標(biāo)準(zhǔn)的代碼機(jī)器人。
多學(xué)、多看、多思考、多實(shí)踐。
沒有什么是不能解決的。