网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
用Indy10中的IdHTTP组件上传提交文件
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式

1、在C++Builder6 Update4中安装好Indy10,可以在www.ccrun.com中找到Indy10的安装包及安装方法;

2、 在C++Builder6中建立一个新的Application,在Form上放置一个IdHTTP组件,再放置一个Button组件,在Button组件的OnClick事件中写入如下代码:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    TIdStringStream* ResponseStream = new TIdStringStream(NULL);
    TIdMultiPartFormDataStream* PostStream = new TIdMultiPartFormDataStream();
    TIdStringList* UploadFile = new TIdStringList();

    try{
        UploadFile->Values["UpFile"] = "c:\test.doc";    //假设需要上传的文件为C盘根目录下的test.doc

        IdHTTP1->Request->ContentType = PostStream->RequestContentType;
        PostStream->AddFile("UpFile",UploadFile->Values["UpFile"],GetMIMETypeFromFile(UploadFile->Values["UpFile"]));
        IdHTTP1->Post("http://localhost/", PostStream, ResponseStream);
    }
    __finally
    {
        delete UploadFile;
        delete PostStream;
        delete ResponseStream;
    }
}
3、如果想加上进度条,还可以在Form上放置一个ProgressBar组件,然后再分别在IdHTTP组件的OnWorkBegin和OnWork两个事件中写入如下代码:

void __fastcall TForm1::IdHTTP1WorkBegin(TObject *ASender, TWorkMode AWorkMode, __int64 AWorkCountMax)
{
    ProgressBar1->Min = 0;
    ProgressBar1->Max = AWorkCountMax;
}
 

void __fastcall TForm1::IdHTTP1Work(TObject *ASender, TWorkMode AWorkMode, __int64 AWorkCount)
{
    ProgressBar1->Position = ProgressBar1->Position + AWorkCount;
}
这样就可以模拟HTML中Input的File来进行文件上传了,还可以继续完善这个功能,例如选择文件(可以利用OpenDialog组件)。当然,把这个转换成ActiveX,运行在客户端IE中,那就更加方便了。

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号