[MFC] Problème de transfert de fichier
Bonjour a tous
Mon problème est une peu compliqué :
Je réalise un transfert de photo.
Pour cela je lis cette photo dans un buffer (de type char * de 4096).
J'envoi ensuite cela a l'aide d'une fonction(constructeur) :
SendQ931Message ( LONG nCallId, BSTR bStrMessage)
ceci donne le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| char *buffer = new char[4096];
FILE *fo=fopen("C:\\Photo.jpg","rb"); // ouverture du fichier
while(!feof(fo)) {
try{
int toto=fread(buffer,sizeof(char),4096,fo);
iTermPtrEv->SendQ931Message(iTermPtrEv->GetActiveCallId(),buffer);
}
catch ( _com_error& excepti){
CString temp="";
temp+="ERROR Photo :";
temp+=(LPCTSTR) excepti.Description();
temp+=excepti.ErrorMessage();
MessageBox(NULL,temp,"Photo",MB_OK);
} |
De l'autre coter de mon application, je dois recevoir les buffer avec la fonction ci dessous :
OnQ931MessageReceived (BSTR bStrMessage, LONG nDecodeurIndice)
Pour ce faire j'utilise le code ci dessous :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
void CTerminalEvent::OnQ931MessageReceived(BSTR bStrMessage,long nDecodeurIndice)
{
CString RecuCS;
RecuCS=BSTRtoASC(bStrMessage);
if(RecuCS.Left(6)=="Volume")
{
if(RecuCS.Left(7)=="Volume2")
{
m_diagVC2->MiseAJourVolume(RecuCS);
return ;
}
else{
m_diagVC3->MiseAJourVolume(RecuCS);
}
}
else{
char *buffer = new char[RecuCS.GetLength()+1];
strncpy(buffer,RecuCS,RecuCS.GetLength());
FILE *fo=fopen("C:\\Photo.jpg","a+b");
fwrite(bStrMessage,sizeof(char),RecuCS.GetLength(),fo);
fclose(fo);
}
}
[quote]
Vous vous en douterez, ca marche pas :D En fait je recois des message mais pas entier.. mon chier de 10K se transforme en 1K a peu pres...
Donc j'ai pas ma photo[/quote] |