asp無懼上傳類2.2上傳檔案的同時,通過 Request.QueryString將參數傳遞到儲存頁面中,querystring
先轉一段文字,對不對再評論
在後台asp程式中,以前擷取表單提交的ASCII 資料,非常的容易。但是如果 需要擷取上傳的檔案,就必須使用Request對象的BinaryRead方法來讀取。BinaryRead方法是對當前輸入資料流進行指定位元組數的二進位讀取,有點需要注意的 是,一旦使用BinaryRead 方法後,再也不能使用Request.Form 或 Request.QueryString 集合了。結合Request對象的TotalBytes屬性,可以將 所有表單提交的資料全部變成二進位,不過這些資料都是經過編碼的。
好像不全對 ,藍色字型這裡好像有 問題,用無懼上傳類2.2(作者好像說是2.0,也許有人改動過)上傳檔案時,Request.Form就是不能用,和該類衝突。這個也許就是以為藍色字型提到的原因,可是Request.QueryString可以用。為瞭解決傳檔案的同時,要傳遞變數值,我使用的方法是:
如果設定批量上傳,則通過檔案上傳xml到伺服器然後寫入mdb,如果不是批量上除,單個例如則用form提取變數值。
批量是時候,將tea_savework.asp遞交地址改寫成?piliang=true&。。。。。其他變數值,就是下面的代碼:
if piliang="" then
%>
<form name="form1" method="post" action="tea_savework.asp">
<%else%>
<form name="form1" method="post" action="tea_savework.asp?piliang=true&cla_id=<%=set_cla_id%>&sub_id=<%=set_sub_id%>&ter_id=<%=set_ter_id%>&bwc_id=<%=set_bwc_id%>" enctype="multipart/form-data">
<%end if%>
.....
<%if piliang = "on" then %> 請選擇上傳成績的Excel檔案(必須使用模板建立的成績檔案)<input name="wenjian" type="file" > <% end if%>
<input type="submit" name="Submit3" value="錄入全班考試成績">
<input name="bbs_count" type="hidden" id="bbs_count" value="<%=i%>" size="2">
<input name="cla_id" type="hidden" id="cla_id" value="<%=set_cla_id%>" size="2">
<input name="sub_id" type="hidden" id="sub_id" value="<%=set_sub_id%>" size="2">
<input name="ter_id" type="hidden" id="ter_id" value="<%=set_ter_id%>" size="2">
<input name="bwc_id" type="hidden" id="bwc_id" value="<%=set_bwc_id%>" size="2">
-------------------------------------------------------------------------------------------------------------------------
tea_savework.asp中的儲存代碼:
test=0
if request.querystring("piliang")="true" then
cla_id=Request.QueryString("cla_id")
ter_id=Request.QueryString("ter_id")
sub_id=Request.QueryString("sub_id")
bwc_id=Request.QueryString("bwc_id")
call savefile() ‘先得到變數值,然後儲存檔案,具體代碼不寫了。
test=1
else
bbs_count=Request.form("bbs_count")
bbs_count=request.form("bbs_count")
cla_id=request.form("cla_id")
ter_id=request.form("ter_id")
sub_id=request.form("sub_id")
bwc_id=request.form("bwc_id")
end if
在使用該類的同時,不能通過request.form擷取參數,和該類中讀取檔案的操作衝突,懷疑是用了上面藍色字型提到的方法,將form中的參數破壞了,如果先使用form擷取參數,那麼該類就無法讀取檔案。。。。。。所以用querystring擷取?後面的變數值,然後再建立類實現讀取上傳的二進位檔案,並儲存。
TMD好久沒搞asp了,手裡所有的書裡 關於asp儲存檔案都沒提,瀏覽器對這個遞交檔案的格式是應該是統一的,但是asp對他 處理的方式比較特殊,原來以為用form可以將參數值擷取,再用類讀上傳的二進位檔案,現在看來好像二者是衝突的,用form得到參數,好像會破壞遞交的資料,是不是form方法對二進位檔案進行了格式處理,這樣不能用
BinaryRead 方法讀了???不知道!!!
也許用form方法得到參數值之後,是不是可以用其他方法得到上傳的二進位檔案?我想微軟的asp應該有自己的方式,不應該會破壞上傳的二進位檔案。只是不知道用什麼方式,現在到處都是轉載,亂轉,,,,,分析的人少,即使分析的也是N年(估計大約是04年左右的文章)前分析的,應該不透徹。
好久沒說話了,自己都不知道自己說了些什麼,亂。。。。。。給自己看就行了,當做筆記。大家就不要看了~~~~