精品一区二区三区影院在线午夜_天天躁日日躁狠狠躁AV麻豆_国产午夜福利短视频_中文字幕乱偷无码AV先锋蜜桃_久久精品一二区东京热_国产成人亚洲日韩欧美久久久,国产成人精品久久一区二区三区

Symbian C++ Multipart/form-data,轉

The following code can be used to upload any file, image, text , video etc.. as a binary file to a server.

The HTTPEngine should have MHTTPDataSupplier as its parent class, as the following functions need to be implemented for the upload process

TBool GetNextDataPart(TPtrC8& aDataPart);
void ReleaseData();
TInt Reset();
TInt OverallDataSize();

The content-type for the post should be

_LIT8(KPostContentType, "multipart/form-data; boundary=AaB03x");

In the MHFRunL the case EGotResponseBodyData should do this

MHTTPDataSupplier* dataSupplier = aTransaction.Response().Body();
TPtrC8 ptr;
dataSupplier->GetNextDataPart(ptr);


// Convert to 16-bit descriptor
HBufC* buf = HBufC::NewLC(ptr.Length());
buf->Des().Copy(ptr);

// Append to iResponseBuffer
if (iResponseBuffer==NULL)
{
iResponseBuffer = buf->AllocL();
}
else
{
iResponseBuffer = iResponseBuffer->ReAllocL(iResponseBuffer->Length()+buf->Length());
iResponseBuffer->Des().Append(*buf);
}

// Release buf
CleanupStack::PopAndDestroy(buf);

if(!iDataAvailable)
{
iRunning=EFalse;
iTransaction.Close();
}
else
{
dataSupplier->ReleaseData();
}

POST code Get the file you want to upload in binary format

RFs aFs;
User::LeaveIfError(aFs.Connect());
CleanupClosePushL(aFs);

RFile aFile;

User::LeaveIfError(aFile.Open(aFs, iFileName, EFileShareAny));

TInt aSize;
User::LeaveIfError(aFile.Size(aSize));

iPostDataImage = HBufC8::NewL(aSize);
TPtr8 aPtr = iPostDataImage->Des();

//Obviously we have to read in the data to the iPostDataImage (ray)
aFile.Read(0, aPtr, aSize);

aFile.Close();
aFs.Close();
CleanupStack::PopAndDestroy(&aFs);

Using EFileShareAny ensures that if the file can be opened by any other application. The file is read into iPostDataImage as a binary file.

Now create the upload format

_LIT8(KDataStart,"--AaB03x");
_LIT8(KCrlf,"\r\n");
_LIT8(KContent,"Content-Disposition: form-data; name='userfile'; filename='");
_LIT8(KFileCompletion,"'");

_LIT(KContent2,"Content-Type: image/gif");
_LIT(KContent3,"Content-Transfer-Encoding: binary");
_LIT8(KDataEnd,"--AaB03x--");

iPostData = HBufC8::NewL(650+aPtr.Length());


TPtr8 iPostDataPtr = iPostData->Des();
iPostDataPtr.Zero();

iPostDataPtr.Append(KCrlf);
iPostDataPtr.Append(KDataStart);
iPostDataPtr.Append(KCrlf);
iPostDataPtr.Append(KContent);
iPostDataPtr.Append(aFname);
iPostDataPtr.Append(KFileCompletion);
iPostDataPtr.Append(KCrlf);
iPostDataPtr.Append(KContent2);
iPostDataPtr.Append(KCrlf);
iPostDataPtr.Append(KContent3);
iPostDataPtr.Append(KCrlf);
iPostDataPtr.Append(KCrlf);
iPostDataPtr.Append(aPtr); //the file in binary
iPostDataPtr.Append(KCrlf);
iPostDataPtr.Append(KDataEnd);
iPostDataPtr.Append(KCrlf);

Submit the transaction

RHTTPHeaders hdr = iTransaction.Request().GetHeaderCollection();
AddHeaderL(hdr, HTTP::EUserAgent, KUserAgent);
AddHeaderL(hdr, HTTP::EAccept, KAccept);
AddHeaderL(hdr, HTTP::EContentType, KPostContentType);

MHTTPDataSupplier* dataSupplier = this;
iTransaction.Request().SetBody(*dataSupplier);

iTransaction.SubmitL();

Implement DataSupplier functions

TBool CHTTPExampleEngine::GetNextDataPart(TPtrC8& aDataPart)
{
TBool retVal = EFalse;
aDataPart.Set(iPostData->Des());
retVal = (aDataPart.Length() == 0);
iDataAvailable=retVal;
return retVal;
}

TInt CHTTPExampleEngine::OverallDataSize()
{
if(iPostData)
return iPostData->Length();
else
return KErrNotFound ;
}

void CHTTPExampleEngine::ReleaseData()
{
if(iDataAvailable)
iTransaction.NotifyNewRequestBodyPartL();
}

Any binary file can be uploaded with this upload code.

察雅县| 泉州市| 泽州县| 唐河县| 武宣县| 花莲市| 巨野县| 嘉禾县| 邯郸市| 余姚市| 江城| 临沂市| 夏津县| 曲周县| 乐至县| 肥西县| 普格县| 江华| 澄迈县| 浑源县| 周宁县| 文山县| 班玛县| 衢州市| 洛川县| 布尔津县| 西乡县| 南部县| 井陉县| 连州市| 济源市| 尼木县| 定州市| 宜兰市| 凤山市| 札达县| 图片| 贵德县| 莱芜市| 大荔县| 灵寿县|