Bonjour à tous,

Je suis actuellement en train de développer une fonctionnalité pour mon site web, pour ce faire j'ai besoin d'enregistrer un blob en base de donnée qui est un très long code binaire. Quand j'essaie de le récuperer avec Php / Symfony, tout ce passe bien (je récupère une ressource de type flux), mais j'ai besoin d'envoyer ce code binaire via de l'XHR.

Cependant, les Response de Symfony n'accepte pas que ce soit une ressource et j'ai vraiment besoin qu'il n'y ai pas de conversion histoire de ne pas corrompre le code. Du coup je suis un peu perdu sur cette partie, je vous mets des extraits de code ci-dessous.

Merci de votre réponse

Partie récupération et envoie via Symfony :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
     /**
     * @Route("/drawing/getBlob/{uniqid}", name="drawing_get_blob")
     * @Method("GET")
     */
    public function getBlob(Project $project, Request $request)
    {
        return new Response($project->getProjectBlob(), 200, ['Content-type' => 'application/octet-stream']);
    }
Partie Xhr :

Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var xhr = new XMLHttpRequest();
var paramUniqId = encodeURIComponent(projectUniqId);
xhr.open('GET', '/drawing/getBlob/'+paramUniqId);
xhr.responseType = "binary";
 
xhr.addEventListener('readystatechange', function() { // On gère ici une requête asynchrone
    if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) { // Si le fichier est chargé sans erreur
        let blob = xhr.responseText;
        console.log(blob);
        app.openFromBlob(blob, (e) => {
            console.log(e);
        });
    }
});
 
xhr.send(null);

Erreur Symfony :

Nom : ErreurSYmfofo.png
Affichages : 16
Taille : 54,2 Ko