文件下载和图片显示
2010-01-19 16:43
302 查看
下载之后保存到RFile中:
void CClientEngine::MHFRunL(RHTTPTransaction aTransaction,
const THTTPEvent& aEvent)
{
switch (aEvent.iStatus)
{
case THTTPEvent::EGotResponseHeaders:
{
// Get HTTP status code from header (e.g. 200)
RHTTPResponse resp = aTransaction.Response();
TInt status = resp.StatusCode();
if (status == 200)
{
// 1、此处添加打开文件代码。
_LIT(KTEMPFILENAME, "C://Temp//TempFileName.gif");
User::LeaveIfError(iFs.Connect());
if (BaflUtils::FileExists(CCoeEnv::Static()->FsSession(),
KTEMPFILENAME))
iFile.Replace(iFs, KTEMPFILENAME, EFileWrite);
else
iFile.Create(iFs, KTEMPFILENAME, EFileWrite);
}
break;
case THTTPEvent::EGotResponseBodyData:
{
MHTTPDataSupplier* body = aTransaction.Response().Body();
TPtrC8 dataChunk;
// GetNextDataPart() returns ETrue, if the received part is the last // one.
TBool isLast = body->GetNextDataPart(dataChunk);
// 2、此处将dataChunk写入文件。
TInt index = 0;
iFile.Seek(ESeekEnd, index);
iFile.Write(index, dataChunk);
if (isLast)
{
// 3、收到最后数据块,此处关闭文件
iFile.Close();
iFs.Close();
}
// Always remember to release the body data.
body->ReleaseData();
}
break;
//...
}
}
}
图片
下载下来也就是文件,要读取图片
也就是读取文件。
CFbsBitmap* C****AppUi::Convert2BitmapFromBuffL(const TDesC8& aData)
{
_LIT(KTEMPFILENAME, "C://TempFileName");
RFile rFile;
TUint fileMode = EFileRead | EFileWrite;
User::LeaveIfError(rFile.Replace(CCoeEnv::Static()->FsSession(), KTEMPFILENAME, fileMode));
CleanupClosePushL(rFile);
User::LeaveIfError(rFile.Write(aData));
rFile.Close();
CleanupStack::PopAndDestroy(&rFile);
CFbsBitmap* bitmap = Convert2BitmapFromFileL(KTEMPFILENAME);
CCoeEnv::Static()->FsSession().Delete(KTEMPFILENAME);
return bitmap;
}
CFbsBitmap* C****AppUi::Convert2BitmapFromFileL(const TDesC& aFilePath)
{
CImageDecoder* imagedecoder =
CImageDecoder::FileNewL(CCoeEnv::Static()->FsSession(), aFilePath,
CImageDecoder::EOptionAlwaysThread);
CleanupStack::PushL(imagedecoder);
CFbsBitmap* bitmap = new(ELeave) CFbsBitmap();
CleanupStack::PushL(bitmap);
User::LeaveIfError(bitmap->Create(imagedecoder->FrameInfo().iOverallSizeInPixels,
imagedecoder->FrameInfo().iFrameDisplayMode));
TRequestStatus status;
imagedecoder->Convert(&status, *bitmap);
User::WaitForRequest(status);
CleanupStack::Pop(bitmap);
CleanupStack::PopAndDestroy(imagedecoder);
return bitmap;
}
使用方法:
_LIT(KOutputFileName,"//StartPage.jpg");
TFileName fileToOpen(KOutputFileName);
iBrowseView->iContainer->SetFbsBitmap(Convert2BitmapFromFileL(fileToOpen));
void C****AppUi::GetBitmapL(const TDesC& aFilePath, CFbsBitmap* aImage, CFbsBitmap* aMask)
{
CImageDecoder* imageDecoder =
CImageDecoder::FileNewL(CCoeEnv::Static()->FsSession(), aFilePath,
CImageDecoder::EOptionAlwaysThread);
CleanupStack::PushL(imageDecoder);
User::LeaveIfError(aImage->Create(imageDecoder->FrameInfo().iOverallSizeInPixels,
imageDecoder->FrameInfo().iFrameDisplayMode));
User::LeaveIfError(aMask->Create(aImage->SizeInPixels(), EGray256));
TRequestStatus status;
imageDecoder->Convert(&status, *aImage, *aMask);
User::WaitForRequest(status);
CleanupStack::PopAndDestroy(imageDecoder);
}
使用方法:
_LIT(KOutputFileName,"//banner_9_on.png");
TFileName fileToOpen(KOutputFileName);
//iBrowseView->iContainer->SetFbsBitmap(Convert2BitmapFromFileL(fileToOpen));
CFbsBitmap* pBitmap1 = new (ELeave) CFbsBitmap();
CFbsBitmap* pBitmap2 = new (ELeave) CFbsBitmap();
GetBitmapL(KOutputFileName, pBitmap1, pBitmap2);
iBrowseView->iContainer->SetFbsBitmap(pBitmap1, pBitmap2);
以上文档我是摘自 Mark070508 ,拿出和大家分享
http://hi.baidu.com/marktian/blo ... 093cd4a2cc2bfd.html
上传文件,先将文件读入到二进制,再上传:
读文件见:
文件相关知识整理
void CClientEngine::MHFRunL(RHTTPTransaction aTransaction,
const THTTPEvent& aEvent)
{
switch (aEvent.iStatus)
{
case THTTPEvent::EGotResponseHeaders:
{
// Get HTTP status code from header (e.g. 200)
RHTTPResponse resp = aTransaction.Response();
TInt status = resp.StatusCode();
if (status == 200)
{
// 1、此处添加打开文件代码。
_LIT(KTEMPFILENAME, "C://Temp//TempFileName.gif");
User::LeaveIfError(iFs.Connect());
if (BaflUtils::FileExists(CCoeEnv::Static()->FsSession(),
KTEMPFILENAME))
iFile.Replace(iFs, KTEMPFILENAME, EFileWrite);
else
iFile.Create(iFs, KTEMPFILENAME, EFileWrite);
}
break;
case THTTPEvent::EGotResponseBodyData:
{
MHTTPDataSupplier* body = aTransaction.Response().Body();
TPtrC8 dataChunk;
// GetNextDataPart() returns ETrue, if the received part is the last // one.
TBool isLast = body->GetNextDataPart(dataChunk);
// 2、此处将dataChunk写入文件。
TInt index = 0;
iFile.Seek(ESeekEnd, index);
iFile.Write(index, dataChunk);
if (isLast)
{
// 3、收到最后数据块,此处关闭文件
iFile.Close();
iFs.Close();
}
// Always remember to release the body data.
body->ReleaseData();
}
break;
//...
}
}
}
图片
下载下来也就是文件,要读取图片
也就是读取文件。
CFbsBitmap* C****AppUi::Convert2BitmapFromBuffL(const TDesC8& aData)
{
_LIT(KTEMPFILENAME, "C://TempFileName");
RFile rFile;
TUint fileMode = EFileRead | EFileWrite;
User::LeaveIfError(rFile.Replace(CCoeEnv::Static()->FsSession(), KTEMPFILENAME, fileMode));
CleanupClosePushL(rFile);
User::LeaveIfError(rFile.Write(aData));
rFile.Close();
CleanupStack::PopAndDestroy(&rFile);
CFbsBitmap* bitmap = Convert2BitmapFromFileL(KTEMPFILENAME);
CCoeEnv::Static()->FsSession().Delete(KTEMPFILENAME);
return bitmap;
}
CFbsBitmap* C****AppUi::Convert2BitmapFromFileL(const TDesC& aFilePath)
{
CImageDecoder* imagedecoder =
CImageDecoder::FileNewL(CCoeEnv::Static()->FsSession(), aFilePath,
CImageDecoder::EOptionAlwaysThread);
CleanupStack::PushL(imagedecoder);
CFbsBitmap* bitmap = new(ELeave) CFbsBitmap();
CleanupStack::PushL(bitmap);
User::LeaveIfError(bitmap->Create(imagedecoder->FrameInfo().iOverallSizeInPixels,
imagedecoder->FrameInfo().iFrameDisplayMode));
TRequestStatus status;
imagedecoder->Convert(&status, *bitmap);
User::WaitForRequest(status);
CleanupStack::Pop(bitmap);
CleanupStack::PopAndDestroy(imagedecoder);
return bitmap;
}
使用方法:
_LIT(KOutputFileName,"//StartPage.jpg");
TFileName fileToOpen(KOutputFileName);
iBrowseView->iContainer->SetFbsBitmap(Convert2BitmapFromFileL(fileToOpen));
void C****AppUi::GetBitmapL(const TDesC& aFilePath, CFbsBitmap* aImage, CFbsBitmap* aMask)
{
CImageDecoder* imageDecoder =
CImageDecoder::FileNewL(CCoeEnv::Static()->FsSession(), aFilePath,
CImageDecoder::EOptionAlwaysThread);
CleanupStack::PushL(imageDecoder);
User::LeaveIfError(aImage->Create(imageDecoder->FrameInfo().iOverallSizeInPixels,
imageDecoder->FrameInfo().iFrameDisplayMode));
User::LeaveIfError(aMask->Create(aImage->SizeInPixels(), EGray256));
TRequestStatus status;
imageDecoder->Convert(&status, *aImage, *aMask);
User::WaitForRequest(status);
CleanupStack::PopAndDestroy(imageDecoder);
}
使用方法:
_LIT(KOutputFileName,"//banner_9_on.png");
TFileName fileToOpen(KOutputFileName);
//iBrowseView->iContainer->SetFbsBitmap(Convert2BitmapFromFileL(fileToOpen));
CFbsBitmap* pBitmap1 = new (ELeave) CFbsBitmap();
CFbsBitmap* pBitmap2 = new (ELeave) CFbsBitmap();
GetBitmapL(KOutputFileName, pBitmap1, pBitmap2);
iBrowseView->iContainer->SetFbsBitmap(pBitmap1, pBitmap2);
以上文档我是摘自 Mark070508 ,拿出和大家分享
http://hi.baidu.com/marktian/blo ... 093cd4a2cc2bfd.html
上传文件,先将文件读入到二进制,再上传:
读文件见:
文件相关知识整理
相关文章推荐
- strusts2文件上传下载,以及二进制图片显示问题
- IE下通过response输出流的方式,输出图片等文件信息到IE,图片显示不了,文件下载不了的问题。
- MVC 保存二进制到数据库,并显示文件的方法(图片显示或下载文件)
- NSOperation 的使用(下载相关) 图片和文件都是可以的 断点续传 图片逐渐显示
- 浏览器文件下载和图片显示(流形式)
- 第三方Girdview中文件下载的方法,以及js显示图片
- servlet从服务器下载文件,是图片则显示,文档则下载(可配置)
- 用TreeView控件实现资源管理器(显示本地硬盘下所有文件夹和文件,并可以浏览图片)(示例代码下载)
- Control Study->AdRotator广告控件显示自定义配置文件中广告以及与DataGrid控件结合使用显示图片(示例代码下载)
- 第一天-解决了轮播图片不能显示和部分文件不能下载两个问题
- 图片显示+文件下载
- Spring文件上传下载and图片上传及前台显示
- 通过HttpServletResponse对象,实现图片的流方式显示和文件的流方式下载
- WPF用流的方式上传/显示/下载图片文件(保存在数据库)
- springMVC4.0图片显示与文件下载
- struts2文件上传与下载与图片显示所遇到的问题
- NSOperation 的使用(下载相关) 图片和文件都是能够的 断点续传 图片逐渐显示
- 用TreeView控件实现资源管理器(显示本地硬盘下所有文件夹和文件,并可以浏览图片)(示例代码下载)
- Control Study->AdRotator广告控件显示自定义配置文件中广告以及与DataGrid控件结合使用显示图片(示例代码下载)
- 使用redis文件服务器完成图片下载显示