您的位置:首页 > 其它

文件下载和图片显示

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

上传文件,先将文件读入到二进制,再上传:
读文件见:

文件相关知识整理

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐