odylano | Voici le code pour charger la jaquette d'un film :
Fct côté client pour demander une image au serveur en AngularJS:
Code :
- function load_movie(id)
- {
- return Movie_Service.Load_movie(id).then(function(resp){
- var pic_64 = resp.data.pic.data;
- var header = resp.data.pic.header;
- var blob = b64_to_blob(pic_64, header);
- var img = new File([blob], 'img.jpg' , { type: header });
- });
- }
- function b64_to_blob(b64Data, contentType, sliceSize) {
- contentType = contentType || '';
- sliceSize = sliceSize || 512;
- var byteCharacters = atob(b64Data);
- var byteArrays = [];
- for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
- var slice = byteCharacters.slice(offset, offset + sliceSize);
- var byteNumbers = new Array(slice.length);
- for (var i = 0; i < slice.length; i++) {
- byteNumbers[i] = slice.charCodeAt(i);
- }
- var byteArray = new Uint8Array(byteNumbers);
- byteArrays.push(byteArray);
- }
- var blob = new Blob(byteArrays, {type: contentType});
- return blob;
- }
- my_app.factory("Movie_Service", function($http, Upload)
- {
- movie.Load_movie = function(id){
-
- var data =
- {
- "commande": "load_movie",
- "id": id
- };
- return $http({
-
- method: 'POST',
- url: "controller/ajax/movie_ajax.php",
- data: $.param(data),
- headers: {'Content-Type': 'application/x-www-form-urlencoded'}
- });
- }
-
- return movie;
- });
|
Fct côté serveur en PHP:
Code :
- function load_movie()
- {
- $response = array();
- $id = $_POST['id'];
- // Fichier image dans la BDD
- $req = $bdd_con->prepare('SELECT id_picture, ext, header, data FROM picture WHERE id_movie = :id AND id_type_picture=2');
- // Ex de donnée dans la table picture
- // id_picture= "99"
- // ext= "jpg"
- // header= "image/jpeg"
- // data= [BLOB - 81.6ko]
- // id_type_picture = "2" pour indiquer que c'est une jaquette
- $req->bindValue("id", $id, PDO::PARAM_STR);
- $req->execute();
- $img = $req->fetchall(PDO::FETCH_ASSOC);
- // ------
- // Envoie de données Blob impossible avec le header : application/x-www-form-urlencoded
- // => Solution : l'encoder en base64
- $pic_b64 = base64_encode($img);
- $response['status'] = "success";
- $response['pic'] = $pic_b64;
- print_r(json_encode($response));
- }
|
Je viens de remarquer avec tout ça qu'il y a bcp de conversion là Tu connais un bon CMS quand même ? j'aimerais aussi tester cette solution |