編寫思路:把本地文件在客戶端通過base64編碼以后發(fā)送目的地. 測試過程中,上傳文件過大,導(dǎo)致超時(shí)不成功. 后來經(jīng)過改善.把編碼分段發(fā)送.測試20M成功
編寫目的:在傳統(tǒng)的解決方案里面,一次一次選取上傳可以.但是在碰到把數(shù)據(jù)庫里文件路徑讀出來,并把這些文件上傳到一個(gè)地方的時(shí)候就比較麻煩. 如果得到路徑一個(gè)一個(gè)去找到用ftp當(dāng)然也是可以的,但每次找這些文件我看都會比較費(fèi)時(shí)。這里編寫這個(gè)主要就是為了通過數(shù)據(jù)庫里的文件路徑取得文件.把文件一次批量上傳到一個(gè)地方. 其主要目的還是為了鍛煉一下自己.
解決過程:起初試著用模擬鍵盤輸入強(qiáng)行賦值給file控件用傳統(tǒng)的方法上傳?墒抢吓龅娇罩档那闆r,以至有很多文件沒有發(fā)送出去。查閱一些資料,現(xiàn)在是把所有路徑通過數(shù)據(jù)庫取到然后寫到一個(gè)js里。然后在前臺用js讀取這些路徑,通過xmlhttp來發(fā)送文件。 因?yàn)閕e不太喜歡xmlHttp.總認(rèn)為他有惡意行為.所以老談出提示警告.所以操作的時(shí)候不能使用web路徑.只能用物理路徑去訪問它. 然后服務(wù)端有一文件來接收這些編碼,并對其進(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í)踐。 沒有什么是不能解決的。
如對此文有意見,歡迎到這里進(jìn)行討論。
出處:藍(lán)色理想
責(zé)任編輯:cjj
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|