社区
Symbian
帖子详情
HTTP下载保存文件问题!!!!!!!!!
huimouse
2007-03-31 09:52:13
在S60上开发一个Http下载的程序,接收到文件后使用流存储到文件,代码如下:
iStream->WriteL(aBodyData);
iStream->CommitL();
其中iStream为RFileWriteStream对象,aBodyData为接收到的内容!
使用这种方法导致整个程序在保存文件的时候非常慢,处于长时间等待状态,不能进行其它的操作,请问各位大侠有何好的解决方案!
...全文
644
19
打赏
收藏
HTTP下载保存文件问题!!!!!!!!!
在S60上开发一个Http下载的程序,接收到文件后使用流存储到文件,代码如下: iStream->WriteL(aBodyData); iStream->CommitL(); 其中iStream为RFileWriteStream对象,aBodyData为接收到的内容! 使用这种方法导致整个程序在保存文件的时候非常慢,处于长时间等待状态,不能进行其它的操作,请问各位大侠有何好的解决方案!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
abcdefg007
2008-09-22
打赏
举报
回复
mark
gaogao1041
2008-09-16
打赏
举报
回复
[Quote=引用 17 楼 Atoric 的回复:]
引用 16 楼 Atoric 的回复:
建议:在论坛搜一下“Http”,会有你想要的资料的。
下面这个帖子对将数据写入数据到文件挺有用的:
http://topic.csdn.net/u/20071211/21/ea4b6881-4da4-4c49-adde-7420f59ed453.html
建议:在论坛搜一下“Http”,会有你想要的资料的。
下面这个帖子对将数据写入到文件挺有用的:
http://topic.csdn.net/u/20071211/21/ea4b6881-4da4-4c49-adde-7420f59ed453.html
[/Quote]
建议:在论坛搜一下“Http”,会有你想要的资料的。
下面这个帖子对将数据写入到文件挺有用的:
http://topic.csdn.net/u/20071211/21/ea4b6881-4da4-4c49-adde-7420f59ed453.html
Atoric
2008-03-31
打赏
举报
回复
[Quote=引用 16 楼 Atoric 的回复:]
建议:在论坛搜一下“Http”,会有你想要的资料的。
下面这个帖子对将数据写入数据到文件挺有用的:
http://topic.csdn.net/u/20071211/21/ea4b6881-4da4-4c49-adde-7420f59ed453.html
[/Quote]
建议:在论坛搜一下“Http”,会有你想要的资料的。
下面这个帖子对
将数据写入到文件
挺有用的:
http://topic.csdn.net/u/20071211/21/ea4b6881-4da4-4c49-adde-7420f59ed453.html
Atoric
2008-03-31
打赏
举报
回复
建议:在论坛搜一下“Http”,会有你想要的资料的。
下面这个帖子对将数据写入数据到文件挺有用的:
http://topic.csdn.net/u/20071211/21/ea4b6881-4da4-4c49-adde-7420f59ed453.html
Paip_Ceser
2008-03-30
打赏
举报
回复
这个我做过一点,贴一段代码:
case THTTPEvent::EGotResponseHeaders:
{
RHTTPResponse resp = aTransaction.Response();
TInt statusCode = resp.StatusCode();
if(statusCode == 200)
{
User::LeaveIfError(iFs.Connect());
if (BaflUtils::FileExists( iEikEnv->FsSession(),iFileName) )
iFile.Replace(iFs,iFileName,EFileWrite);
else
iFile.Create(iFs,iFileName,EFileWrite);
}
else
{
}
}
break;
case THTTPEvent::EGotResponseBodyData:
{
MHTTPDataSupplier* body = aTransaction.Response().Body();
TPtrC8 ptr;
iIsLast = body->GetNextDataPart(ptr);
TInt index = 0;
iFile.Seek(ESeekEnd,index);
iFile.Write(index,ptr);
if(iIsLast)
{
iFile.Close();
iFs.Close();
}
}
suyouxin
2008-03-29
打赏
举报
回复
[Quote=引用 8 楼 suyouxin 的回复:]
用异步模式,不然write会阻塞进程
同步模式总是等待http一个会话结束再返回
[/Quote]
汗,看错了,还以为是HTTP的类,原来就是写文件啊,应该没必要异步,文件操作相对比较快,可能是别的地方阻塞进程了
yanro
2008-03-01
打赏
举报
回复
RFs rfs;
RFile rfile;
User::LeaveIfError (rfs.Connect ( ) );
ConeUtils::EnsurePathExistsL ( filepath );
TInt err = rfile.Open (rfs, filepath, EFileRead|EFileWrite );
if (err != KErrNone )
{
TRAPD(err,BaflUtils::EnsurePathExistsL(rfs,filepath))
;
User::LeaveIfError (rfile.Create (rfs, filepath, EFileWrite ) );
}
TInt bytes;
rfile.Size (bytes );
TInt len = aBodyData.Length ( );
if ( len <= 0 )
return;
HBufC8 *temp = aBodyData.Alloc ( );
rfile.Write (bytes, (TDes8 &)temp->Des() );
rfile.Close ( );
rfs.Close ( );
//HTTP下载文件分段来接收,保存文件也必须下载多少保存多少,没次打开时先判断文件存在不存在.不存在先创建,存在则写到文件的后面.(还可以实现断点续传)!
caitian6
2008-01-22
打赏
举报
回复
mark
Eddy_0825
2008-01-21
打赏
举报
回复
这个程序我实现过,用http上传下载都很正常。
速度很快。
肯定是write函数用的不对。
dyw
2008-01-12
打赏
举报
回复
异步模式?从实际使用来看没有必要,网络操作比文件写入慢许多。也从未碰到数据丢失的情况。
为何“同步模式总是等待http一个会话结束再返回”?只文件写入而已,当收到body信息时写入文件即可。
erener
2008-01-12
打赏
举报
回复
dyw
道不同不相为谋
等 级:
发表于:2008-01-11 22:08:467楼 得分:0
楼上说的“可能会死”是正确的,这是软件的共性,与后面的原因不相干吧。
此外,多线程计划怎么用?难道会替代读写文件?
==============================
我这里的“可能会死”指机器很慢,处于长时间等待状态,不能进行其它的操作
这个我也遇到过, 比如我下载一个大概有1M多的文件, 那么就会有几百次的内存操作,
但是这个时候我还都没有写入文件中, 还是“处于长时间等待状态,不能进行其它的操作”
具体原因我也不理解,难道这里变成同步的了?所以我想如果采用另外一个服务进程帮我处理网络数据,是不是可以避免。
具体没有实施,没那么多时间,“不能进行其它的操作”那就让用户等吧
suyouxin
2008-01-12
打赏
举报
回复
用异步模式,不然write会阻塞进程
同步模式总是等待http一个会话结束再返回
dyw
2008-01-11
打赏
举报
回复
在收到header时打开流,body时一直写入,直到最后body关闭流。
caitian6
2008-01-11
打赏
举报
回复
mark
dyw
2008-01-11
打赏
举报
回复
楼上说的“可能会死”是正确的,这是软件的共性,与后面的原因不相干吧。
此外,多线程计划怎么用?难道会替代读写文件?
erener
2008-01-11
打赏
举报
回复
可能会死
因为一直接收数据 一直写
用多线程吧
hanxiao_0210
2008-01-09
打赏
举报
回复
mark
格利高里
2007-04-12
打赏
举报
回复
手机上http接收的时候,每次recv一般都是1-2k左右,一边接收,一般保存,感觉不到延迟阿
Beover1984
2007-04-12
打赏
举报
回复
可以考虑使用RFile::Write()的异步方法并通过活动对象来实现.
void Write(const TDesC8& aDes,TRequestStatus& aStatus);
Qt5(C++)高级篇之1:
HTTP
网络编程实战
所有章节均有理论知识介绍、接口讲解、实例代码讲解,讲解过程中不断穿插老师在开发过程中遇到的
问题
及解决方法(可以
下载
所有的电子课件与源码)。 3.本阶段主要完成Qt高阶段的
HTTP
编程:所有章节均配备实战项目、...
[
问题
]如何直接在网页中打开
文件
不出现
下载
保存
提示框!
1。如何直接在网页中打开
文件
不出现
下载
保存
提示框!2。如何不打开
文件
直接出现
下载
保存
提示框!2个
问题
对比一下!请高手赐教!
如何使用ffmpeg命令
下载
m3u8后缀的
文件
!!
首先
下载
ffmpeg ffmpeg官网 根据自己的需求
下载
对应的zip 我这里是使用的...系统变量中点击path编辑 ,将刚刚
下载
好的ffmpeg
文件
中的bin
文件
的路径添加到path中
保存
设置。这样环境变量就配置好了!!! 进入cm...
亲测可用!微信小程序实现
下载
预览
文件
,导出及
保存
文件
及excel(1)
思路: 先调用服务器接口,一个返回写入
文件
之后返回
保存
文件
的
下载
目录URL的接口,之后再用微信官方API接口进行
下载
操作,
下载
完成后生成临时缓存目录,
保存
文件
,操作
保存
指定位置之后进行文档打开预览 以上后端...
怎么
保存
html,怎样
保存
网页?
文件
格式使用"仅
保存
html"(通常部分图片看不到),而不是使用"
保存
全部html"如果像完整
保存
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!方法1:使用word2000或者word2000XP,word2002打开然后
保存
,比如:MicrosoftOfficeXP完美...
Symbian
3,120
社区成员
9,186
社区内容
发帖
与我相关
我的任务
Symbian
塞班系统(Symbian系统)是塞班公司为手机而设计的操作系统,它的前身是英国宝意昂公司的 EP ( Electronic Piece of cheese)操作系统。
复制链接
扫一扫
分享
社区描述
塞班系统(Symbian系统)是塞班公司为手机而设计的操作系统,它的前身是英国宝意昂公司的 EP ( Electronic Piece of cheese)操作系统。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章