線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1292
推到 Plurk!
推到 Facebook!

HELP ME:怎样从客户端读入文件?

答題得分者是:RaynorPao
UpperBoy
一般會員


發表:1
回覆:3
積分:0
註冊:2003-03-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-17 10:58:39 IP:61.157.xxx.xxx 未訂閱
在处理WEB数据库时,一表的备份在客户端,现在我想从客户端把该备份文件读入,并添加数据到数据库的表中。在网页中已通过< input type=file name=OPENFILE ... >浏览找到了该文件,可是CB中用 TWebRequest *Request 时怎样来取得该文件呢? 部分代码: void __fastcall TWebModule1::WebModule1WebActionTableInAction( TObject *Sender, TWebRequest *Request, TWebResponse *Response, bool &Handled) { ...... TStringList *pList = new TStringList(); pList->LoadFromFile(Request->QueryFields->Values["OPENFILE"]); ...... } 问题就是,Request->QueryFields->Values["OPENFILE"]仅仅是找到了客户端的路径及文件名,我怎样通过Request来打开该文件[上面那种方法不行]?或其他方法???。 發表人 - upperboy 於 2003/03/17 10:59:58
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-17 11:29:14 IP:203.73.xxx.xxx 未訂閱
引言: 在处理WEB数据库时,一表的备份在客户端,现在我想从客户端把该备份文件读入,并添加数据到数据库的表中。在网页中已通过< input type=file name=OPENFILE ... >浏览找到了该文件,可是CB中用 TWebRequest *Request 时怎样来取得该文件呢? 部分代码: void __fastcall TWebModule1::WebModule1WebActionTableInAction( TObject *Sender, TWebRequest *Request, TWebResponse *Response, bool &Handled) { ...... TStringList *pList = new TStringList(); pList->LoadFromFile(Request->QueryFields->Values["OPENFILE"]); ...... } 问题就是,Request->QueryFields->Values["OPENFILE"]仅仅是找到了客户端的路径及文件名,我怎样通过Request来打开该文件[上面那种方法不行]?或其他方法???。
UpperBoy 你好: 透過 HTTP 即可取得檔案,請參考以下的連結文章
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
UpBoy
一般會員


發表:4
回覆:7
積分:2
註冊:2003-03-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-17 11:52:32 IP:61.157.xxx.xxx 未訂閱
谢谢你RaynorPao 可是使用IdHTTP1->Get("http://localhost/login/jpgBuf.jpg", ms); 只能取得localhost下的档案么? 能否取得客户机上任一目录下的档案呢?!
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-17 11:58:04 IP:203.73.xxx.xxx 未訂閱
引言: 谢谢你RaynorPao 可是使用IdHTTP1->Get("http://localhost/login/jpgBuf.jpg", ms); 只能取得localhost下的档案么? 能否取得客户机上任一目录下的档案呢?!
UpperBoy 你好: 不只能取得 localhost 下的檔案,那是我用來 Demo 的範例,你可以自己試試 看取得其他目錄下的檔案 --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
UpperBoy
一般會員


發表:1
回覆:3
積分:0
註冊:2003-03-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-17 15:11:30 IP:61.157.xxx.xxx 未訂閱
RaynorPao你好: 因为IdHTTP1->Get(...);取得档案时的第一个参数是URL,就是说它要依靠IIS作为基础[Windows2000]。如果客户端没有安装IIS那么,要怎么获得呢?[而你所给的连接文章中的例子是從HTTP SERVER上取得文件,客户端怎么办呢?]
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-17 15:21:22 IP:203.73.xxx.xxx 未訂閱
引言: RaynorPao你好: 因为IdHTTP1->Get(...);取得档案时的第一个参数是URL,就是说它要依靠IIS作为基础[Windows2000]。如果客户端没有安装IIS那么,要怎么获得呢?[而你所给的连接文章中的例子是從HTTP SERVER上取得文件,客户端怎么办呢?] < face="Verdana, Arial, Helvetica"> UpperBoy 你好: 不好意思,我一開始就誤解了你的問題了 針對你的問題,如果只是純粹要取得客戶端的檔案的話,我以前的做法是先寫一 個 > --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
UpperBoy
一般會員


發表:1
回覆:3
積分:0
註冊:2003-03-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-03-17 16:59:49 IP:61.157.xxx.xxx 未訂閱
RaynorPao你好: 依据你的方法,确实可以办到。 不过现在,我想使用TNMStrmServ和TNMStrm来发送文档你觉得怎样?有何建议?    
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-03-17 17:06:52 IP:203.73.xxx.xxx 未訂閱
引言: RaynorPao你好: 依据你的方法,确实可以办到。 不过现在,我想使用TNMStrmServ和TNMStrm来发送文档你觉得怎样?有何建议? < face="Verdana, Arial, Helvetica"> UpperBoy 你好: 當然可以啦,這樣問題的解決方式就更簡單了,請參考以下的連結 不過要注意多個
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
UpperBoy
一般會員


發表:1
回覆:3
積分:0
註冊:2003-03-17

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-03-18 10:06:40 IP:61.157.xxx.xxx 未訂閱
RaynorPao你好: 感谢你一直对此贴的关注,我在CSDN上也贴出了同样的问题,一位网友给出了如下解答,我觉得很满意.现转贴如下,希望大家可以互相学习.    void __fastcall TWebModule1::WebModule1WebActionItem1Action(       TObject *Sender, TWebRequest *Request, TWebResponse *Response,       bool &Handled) {     Handled = true;        AnsiString FileName, ContentType, FileFieldName;     TMemoryStream *mStream = new TMemoryStream;     int FileCount = Request->Files->Count;     TStringList *Html = new TStringList;     Html->Add("<html><head></head><body>"); Html->Add(AnsiString("用户总共选择传送了 ") IntToStr(FileCount) " 个文件。
"); for (int m(0); m < FileCount; m ) { mStream->Position = 0; FileFieldName = Request->Files->Items[m]->FieldName; ContentType = Request->Files->Items[m]->ContentType; FileName = ExtractFileName(Request->Files->Items[m]->FileName); mStream->LoadFromStream(Request->Files->Items[m]->Stream); int newSize = mStream->Size - 2; mStream->SetSize(newSize); mStream->SaveToFile(BasePath FileName); Html->Add("第" IntToStr(m 1) "个文件是客户机上的:" Request->Files->Items[m]->FileName "
"); Html->Add("Field Name : " FileFieldName "
"); Html->Add("Content is : " ContentType "
"); } Html->Add(BasePath FileName "</body></html>"); Response->Content = Html->Text; Response->SendResponse(); delete mStream; } 如此就可以上传文件了。 發表人 - UpperBoy 於 2003/03/18 10:09:12
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-03-18 10:22:49 IP:203.73.xxx.xxx 未訂閱
引言: RaynorPao你好: 感谢你一直对此贴的关注,我在CSDN上也贴出了同样的问题,一位网友给出了如下解答,我觉得很满意.现转贴如下,希望大家可以互相学习. void __fastcall TWebModule1::WebModule1WebActionItem1Action( TObject *Sender, TWebRequest *Request, TWebResponse *Response, bool &Handled) { Handled = true; AnsiString FileName, ContentType, FileFieldName; TMemoryStream *mStream = new TMemoryStream; int FileCount = Request->Files->Count; TStringList *Html = new TStringList; Html->Add("<html><head></head><body>"); Html->Add(AnsiString("用户总共选择传送了 ") IntToStr(FileCount) " 个文件。
"); for (int m(0); m < FileCount; m ) { mStream->Position = 0; FileFieldName = Request->Files->Items[m]->FieldName; ContentType = Request->Files->Items[m]->ContentType; FileName = ExtractFileName(Request->Files->Items[m]->FileName); mStream->LoadFromStream(Request->Files->Items[m]->Stream); int newSize = mStream->Size - 2; mStream->SetSize(newSize); mStream->SaveToFile(BasePath FileName); Html->Add("第" IntToStr(m 1) "个文件是客户机上的:" Request->Files->Items[m]->FileName "
"); Html->Add("Field Name : " FileFieldName "
"); Html->Add("Content is : " ContentType "
"); } Html->Add(BasePath FileName "</body></html>"); Response->Content = Html->Text; Response->SendResponse(); delete mStream; } 如此就可以上传文件了。
UpperBoy 你好: 感謝你的熱心分享,我想~~這方面的做法雖然很多< > 但是能夠取得一個讓自己滿意的做法,算是相當的不容易吧??< > 我自己也一直還是一個學習者,如果有回答得不好的地方,希望你多包涵 --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
系統時間:2024-03-29 16:09:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!