Ionic 2 : Envoie d'une image vers un serveur web à l'aide de PHP et Angular 2
|  | 
| android, ios, ionic 2 | 
objectif
- Accès à la Galerie & Choisissez Image
- Obtenir la photo avec base64 string
- Convertir base64 string à une image visualisable
Étapes à suivre
1. Créer un nouveau projet ionic 2
ionic start sendimage --v2
2. Ajouter la plate-forme requise
ionic platform add android ionic platform add ios
3. Ajoutez cordova Camera Plugin
ionic plugin add cordova-plugin-camera
4. Ouvrez src / pages / home / home.html et mettez ce code :
<ion-header>
  <ion-navbar>
    <ion-title>Home</ion-title>
  </ion-navbar>
</ion-header>
<ion-content padding>
 <button ion-button color="primary" (click)="accessGallery()">Open Gallery</button>
 <img [src]="base64Image" *ngIf="base64Image" />
 <button ion-button color="danger" (click)="upload()">Upload</button>
</ion-content>
5. Modifiez src/pages/home/home.ts
import { Component } from '@angular/core';
import { LoadingController, AlertController } from 'ionic-angular';
import { Camera, Transfer } from 'ionic-native';
@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {
  base64Image;
  fileID="";
    constructor(
      public loadingCtrl: LoadingController,
      public alertCtrl: AlertController
    ) {}
    accessGallery()
    {
        Camera.getPicture({
            sourceType: Camera.PictureSourceType.SAVEDPHOTOALBUM,
            destinationType: Camera.DestinationType.DATA_URL
        }).then((imageData) => {
            this.base64Image = 'data:image/jpeg;base64,' + imageData;
        }, (err) => {
            console.log(err);
        });
    }
    upload(){
  const fileTransfer = new Transfer();
  var options: any;
  var filename = this.base64Image.substr(this.base64Image.lastIndexOf('/') + 1) +'img.jpg';
  options = {
      fileKey: 'file',
      fileName: filename,
    // fileName: 'image.jpg',
     mimeType: "binary/octet-stream",
    // headers: {}
     params: { 'fileName': filename }
  };
  let loading = this.loadingCtrl.create({content:"Loading..."});
  loading.present();
  fileTransfer.upload(this.base64Image, encodeURI("http://yourPhpfilepath.com"), options)
   .then((data) => {
     loading.dismiss();
     console.log("Successful upload...");
     console.log("Code = " + data.responseCode);
     this.fileID= data.response;
   }, (err) => {
     // error
     loading.dismiss();
     let alert = this.alertCtrl.create({
        title: 'Cannot upload',
        subTitle: err.code,
        buttons: ['Dismiss']
      });
    alert.present();
     console.log("Failed to upload...");
     console.log("Code = " + err.code);
   })
}
  }
6. Developpez le code PHP 
<?php
header('Access-Control-Allow-Origin: *');
$target_path = "image/";
if(isset($_FILES['file']))
{
$target_path = $target_path . basename( $_FILES['file']['name']);
if (move_uploaded_file($_FILES['file']['tmp_name'], $target_path)) 
{
    echo "Upload and move success";
} else 
{
echo $target_path;
    echo "There was an error uploading the file, please try again!";
}
}
?>
well done Mr thanks a lot , the image is stored succesfully , i would like to store it into a database table and display it with ionic list . Which changes to the php code??
RépondreSupprimerYou cannot store an image into a database... but you can insert its URL into the database. And after that you can retrieve the images in a List from their URLs
Supprimer