在处理WEB数据库时,我想在服务器上将客户端一文本文件读入怎么办?

sunnysun67 2003-03-12 03:32:05
在处理WEB数据库时,一表的备份在客户端,现在我想从客户端把该备份文件读入,并添加数据到数据库的表中。在网页中已通过< input type=file name=OPENFILE ... >浏览找到了该文件,可是CB时怎样来取得该文件呢?
...全文
54 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunnysun67 2003-03-18
  • 打赏
  • 举报
回复
rh,真是太谢谢了.
程序已经搞定.马上结帖.
rh 2003-03-18
  • 打赏
  • 举报
回复
郁闷,睡不着,神经衰弱了~

要上传文件,TWebRequest怎么会不可以呢?
手把手的来一个:
1. 先写简单的,HTML文件如下:
<html>
<body>
   <form name="mainForm"
enctype="multipart/form-data"
action="myupload.exe" //这里是我们的cgi文件,功能就是接收客户上传的文件
method=post>

<input name=uploadfile type=file id="uploadfile">
<br>
   <input type=submit name=ok value="确定上传">
   </form>
</body>
</html>

2. OK,新建一个CGI
添加一个私有成员AnsiString BasePath,在WebModule里对其赋值:BasePath = ExtractFilePath(ParamStr(0))。然后,新建一default的action,在其OnAction事件里接收客户上传的文件:
//---------------------------------------------------------------------------

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) + " 个文件。<br>");

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 + "<br>");
Html->Add("Field Name : " + FileFieldName + "<br>");
Html->Add("Content is : " + ContentType + "<br>");
}

Html->Add(BasePath + FileName + "</body></html>");
Response->Content = Html->Text;
Response->SendResponse();

delete mStream;
}

如此就可以上传文件了。
sunnysun67 2003-03-17
  • 打赏
  • 举报
回复
TWebRequest *Request就没有直接读文件的方法什么的吗?![我是指读客户端的文件]

那么,假设要上传一张图片[如某些论坛里面的头像之类的],TWebRequest *Request也办不到啰?!
BCBChina 2003-03-17
  • 打赏
  • 举报
回复
先上传再读
warton 2003-03-17
  • 打赏
  • 举报
回复
可以加 一个hidden的button指 向要读的文件,在用户submit时就将文件上 传到服务器,然后再读
sunnysun67 2003-03-17
  • 打赏
  • 举报
回复
"恶意"的代码,算了吧。还有人建议我用木马呢!
zj23157815 2003-03-17
  • 打赏
  • 举报
回复
up
sunnysun67 2003-03-14
  • 打赏
  • 举报
回复
是的。我是用的
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来打开该文件[上面那种方法不行]?或其他方法???。
yesry 2003-03-14
  • 打赏
  • 举报
回复
这是网页的一种形式。不过我对其不熟悉。可以参看Web Mail的网页怎样写的。至于BCB的写法还要熟悉递交上海的数据格式进行分析。
「已注销」 2003-03-14
  • 打赏
  • 举报
回复
用ftp吧,我瞎猜的,别笑话我!!!
l_clove 2003-03-14
  • 打赏
  • 举报
回复
在你的页面里加一段"恶意"的代码,对楼主来说应该是小Case吧,传上去不就行了
「已注销」 2003-03-13
  • 打赏
  • 举报
回复
gz
888888888888 2003-03-13
  • 打赏
  • 举报
回复
关注
sunnysun67 2003-03-13
  • 打赏
  • 举报
回复
没有人知道吗?分数不够可以再加!
sunnysun67 2003-03-13
  • 打赏
  • 举报
回复
唉,究竟有没有人会啊???????
自己顶一下
dhbo 2003-03-13
  • 打赏
  • 举报
回复
gz
sunnysun67 2003-03-12
  • 打赏
  • 举报
回复
我不想主動傳,我想讓客戶机上的用戶自己傳
spaceman 2003-03-12
  • 打赏
  • 举报
回复
你可以让客户端在联服务器时主动上传啊

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧