UPLOAD JPG through http
Hi
I am using follwing code to upload jpg file
void CreadbmpDlg::OnBnClickedPressl()
{ DWORD dwTotalRequestLength;
DWORD dwChunkLength;
DWORD dwReadLength;
DWORD dwResponseLength;
CHttpFile* pHTTP = NULL;
dwChunkLength = 64 * 1024;
void* pBuffer = malloc(dwChunkLength);
CInternetSession session("sendFile");
CHttpConnection *connection = NULL;
//Create the multi-part form data that goes before and after the
actual file upload.
CFile file(_T("upload.txt"),CFile::modeRead);
CString strHTTPBoundary = _T
("FFF3F395A90B452BB8BEDC878DDBD152");
CString strPreFileData = MakePreFileData(strHTTPBoundary,
file.GetFileName());
CString strPostFileData = MakePostFileData(strHTTPBoundary);
CString strRequestHeaders = MakeRequestHeaders(strHTTPBoundary);
dwTotalRequestLength = strPreFileData.GetLength() +
strPostFileData.GetLength() + file.GetLength();
connection = session.GetHttpConnection
("www.mydomain.com",NULL,INTERNET_DEFAULT_HTTP_PORT);
pHTTP = connection->OpenRequest(CHttpConnection::HTTP_VERB_POST, _T("/
t.php"));
pHTTP->AddRequestHeaders(strRequestHeaders);
pHTTP->SendRequestEx(dwTotalRequestLength, HSR_SYNC | HSR_INITIATE);
//Write out the headers and the form variables
pHTTP->Write((LPSTR)(LPCSTR)strPreFileData, strPreFileData.GetLength
());
//upload the file.
dwReadLength = -1;
int length = file.GetLength(); //used to calculate percentage
complete.
while (0 != dwReadLength)
{
dwReadLength = file.Read(pBuffer, dwChunkLength);
if (0 != dwReadLength)
{
pHTTP->Write(pBuffer, dwReadLength);
}
}
file.Close();
//Finish the upload.
pHTTP->Write((LPSTR)(LPCSTR)strPostFileData, strPostFileData.GetLength
());
pHTTP->EndRequest(HSR_SYNC);
//get the response from the server.
LPSTR szResponse;
CString strResponse;
dwResponseLength = pHTTP->GetLength();
while (0 != dwResponseLength )
{
szResponse = (LPSTR)malloc(dwResponseLength + 1);
szResponse[dwResponseLength] = '\0';
pHTTP->Read(szResponse, dwResponseLength);
strResponse += szResponse;
free(szResponse);
dwResponseLength = pHTTP->GetLength();
}
AfxMessageBox(strResponse);
//close everything up.
pHTTP->Close();
connection->Close();
session.Close();
}
CString CreadbmpDlg::MakeRequestHeaders(CString& strBoundary)
{
CString strFormat;
CString strData;
strFormat = _T("Content-Type: multipart/form-data; boundary=%s\r\n");
strData.Format(strFormat, strBoundary);
return strData;
}
CString CreadbmpDlg::MakePreFileData(CString& strBoundary, CString&
strFileName)
{
CString strFormat;
CString strData;
strFormat = _T("--%s");
strFormat += _T("\r\n");
strFormat += _T("Content-Disposition: form-data; name=\"user\"");
strFormat += _T("\r\n\r\n");
strFormat += _T("%s");
strFormat += _T("\r\n");
//strFormat += _T("--%s");
//strFormat += _T("\r\n");
//strFormat += _T("Content-Disposition: form-data; name=\"email\"");
//strFormat += _T("\r\n\r\n");
//strFormat += _T("%s");
//strFormat += _T("\r\n");
strFormat += _T("--%s");
strFormat += _T("\r\n");
//strFormat += _T("Content-Disposition: form-data; name=\"filename\";
filename=\"%s\"");
strFormat += _T("Content-Disposition: form-data; name=\"filename\";
filename=\"%s\"");
strFormat += _T("\r\n");
//strFormat += _T("Content-Type: audio/x-flac");
strFormat += _T("Content-Type: application/x-www-form-urlencoded");
//strFormat += _T("Content-Type: image/jpeg");
strFormat += _T("\r\n");
strFormat += _T("Content-Transfer-Encoding: binary");
strFormat += _T("\r\n\r\n");
strData.Format(strFormat, strBoundary, "mohit", strBoundary,
strFileName);
//strData.Format(strFormat, strBoundary, "mohit", strBoundary,
L"abc@acd,com", strBoundary, strFileName);
return strData;
}
CString CreadbmpDlg::MakePostFileData(CString& strBoundary)
{
CString strFormat;
CString strData;
strFormat = _T("\r\n");
strFormat += _T("--%s");
strFormat += _T("\r\n");
strFormat += _T("Content-Disposition: form-data; name=\"submitted\"");
strFormat += _T("\r\n\r\n");
strFormat += _T("");
strFormat += _T("\r\n");
strFormat += _T("--%s--");
strFormat += _T("\r\n");
strData.Format(strFormat, strBoundary, strBoundary);
return strData;
}
My file is posted properly.But i am not able to get Postdata properly
("submitted" value is blank).Can you tell me where i am wrong
Thanks in advance
Mohit Kumar