You Are Here:

Community: Wiki

This page was last modified on 7 September 2009, at 08:00.

How to download a file on the device

From Forum Nokia Wiki

The following article shows how to use the HTTP Client to download and store a file on the device.

Before the transaction

The file download can be initiated using the GET Method of the HTTP Client. But to store the file being downloaded the following needs to be done: (in the get method itself)

  • Create a file on the device.
Reviewer Approved   
_LIT(KXMLFilePath, "c:\\mytempfiles\\");
iCurrentFileName.Append(_L("default.xml"));
TInt err=iRFileObj.Open(iFsSession,iCurrentFileName,EFileWrite);
if (err==KErrNotFound) // file does not exist - create it
{
err=iRFileObj.Create(iFsSession,iCurrentFileName,EFileWrite);
}

once created the file contents are appended as the download happens.

  • Initiate the transaction for the file to download

A file download can happen as a GET to a particular URL, e.g. http://www.foo.com/myfile.xml, here the file to download is myfile.xml. This file will downloaded and stored as default.xml in our example.

During the transaction

Once the GET has started use the following code in MHFRunL to store the file

case THTTPEvent::EGotResponseBodyData:
 
// Get text of response body
MHTTPDataSupplier* dataSupplier = aTransaction.Response().Body();
TPtrC8 ptr;
dataSupplier->GetNextDataPart(ptr);
 
TInt aPos=0;
iRFileObj.Seek(ESeekCurrent, aPos);
iRFileObj.Write(ptr); //save the file being downloaded
 
HBufC* buf = HBufC::NewLC(ptr.Length());
buf->Des().Copy(ptr);
 
if (!iResponseBuffer)
{
iResponseBuffer = buf->AllocL();
}
else
{
iResponseBuffer = iResponseBuffer->ReAllocL(iResponseBuffer->Length()+buf->Length());
iResponseBuffer->Des().Copy(*buf);
}
 
// Release buf
CleanupStack::PopAndDestroy(buf);
 
// Release the body data
dataSupplier->ReleaseData();

Now the file has been stored and can be accessed at "C:\\mytempfiles\\default.xml"

Related Wiki Articles

No related wiki articles found

Rate This

 
Bookmark this page: DeliciousDiggFacebookGoogleYahooStumbleUponRedditDiigoTechnocratiTwitter  Share this page Share this page Print this Page Print this page Invite a friend Invite a friend
京ICP备05048969号    Email Newsletters Press Terms & Conditions Privacy Policy Sitemap Contact Us © 2009 Nokia