HELP ME:怎样从客户端读入文件? |
答題得分者是:RaynorPao
|
UpperBoy
一般會員 發表:1 回覆:3 積分:0 註冊:2003-03-17 發送簡訊給我 |
在处理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 發送簡訊給我 |
引言: 在处理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 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 谢谢你RaynorPao 可是使用IdHTTP1->Get("http://localhost/login/jpgBuf.jpg", ms); 只能取得localhost下的档案么? 能否取得客户机上任一目录下的档案呢?!UpperBoy 你好: 不只能取得 localhost 下的檔案,那是我用來 Demo 的範例,你可以自己試試 看取得其他目錄下的檔案 --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
UpperBoy
一般會員 發表:1 回覆:3 積分:0 註冊:2003-03-17 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: RaynorPao你好: 因为IdHTTP1->Get(...);取得档案时的第一个参数是URL,就是说它要依靠IIS作为基础[Windows2000]。如果客户端没有安装IIS那么,要怎么获得呢?[而你所给的连接文章中的例子是從HTTP SERVER上取得文件,客户端怎么办呢?] >>< face="Verdana, Arial, Helvetica"> UpperBoy 你好: 不好意思,我一開始就誤解了你的問題了 針對你的問題,如果只是純粹要取得客戶端的檔案的話,我以前的做法是先寫一 個 > --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
UpperBoy
一般會員 發表:1 回覆:3 積分:0 註冊:2003-03-17 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: RaynorPao你好: 依据你的方法,确实可以办到。 不过现在,我想使用TNMStrmServ和TNMStrm来发送文档你觉得怎样?有何建议? >>< face="Verdana, Arial, Helvetica"> UpperBoy 你好: 當然可以啦,這樣問題的解決方式就更簡單了,請參考以下的連結 不過要注意多個
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
UpperBoy
一般會員 發表:1 回覆:3 積分:0 註冊:2003-03-17 發送簡訊給我 |
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 發送簡訊給我 |
引言: 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) " 个文件。UpperBoy 你好: 感謝你的熱心分享,我想~~這方面的做法雖然很多< > 但是能夠取得一個讓自己滿意的做法,算是相當的不容易吧??< > 我自己也一直還是一個學習者,如果有回答得不好的地方,希望你多包涵 --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |