Bonjour à tous,

J'ai un programme qui me permet d'envoyer des fichiers par HTTP. Pour cela, je lisais le contenu des fichiers en faisant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
ifstream file (filename, ios::in|ios::binary|ios::ate);
size = file.tellg();
file.seekg (0, ios::beg);
char * bufferToSend =  new char[size];
file.read (bufferToSend, size );
//Envoi du buffer par http
puis j'envoyais ce buffer en plusieurs fois.
C'était assez crade parce que ca chargait tout en mémoire et j'avais des erreurs sur les gros fichiers.

Du coup j'ai modifié mon code avec ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
ifstream file (filename, ios::in|ios::binary|ios::ate);
size = file.tellg();
file.seekg (0, ios::beg);
for (int i = 0 ; i < size; i +=4096)
{
    //G simplifié mais en gros c ca
    char * bufferToSend =  new char[4096];
    file.read (bufferToSend, 4096);
    //Envoi du buffer par http
}
Donc je reçois bien mes fichiers mais g un GROOOOS problème lorsque le fichier que j'envoie contient un espace. Le fichier recu fait la meme taille mais le contenu est completement différent.
Y aurait-il un bug dans la méthode read lorsque les fichiers ont des espaces dans le nom ?

Merci d'avance pour toutes vos réponses.