File upload 已解决-使用Ionic 5将图像上载到服务器

File upload 已解决-使用Ionic 5将图像上载到服务器,file-upload,ionic5,File Upload,Ionic5,我一直在尝试使用Ionic 5将图像上传到服务器,但没有任何运气。 使用相机拍摄图像或从galery中选择图像并尝试上载后,返回空(未选择图像) 离子代码: createFileName() { const d = new Date(), n = d.getTime(), newFileName = n + '.jpg'; return newFileName; } pathForImage(img: string) { if (im

我一直在尝试使用Ionic 5将图像上传到服务器,但没有任何运气。 使用相机拍摄图像或从galery中选择图像并尝试上载后,返回空(未选择图像)

离子代码:

  createFileName() {
    const d = new Date(),
      n = d.getTime(),
      newFileName = n + '.jpg';
    return newFileName;
  }

  pathForImage(img: string) {
    if (img === null) {
      return '';
    } else {
      return this.file.dataDirectory + img;
    }
  }


  async selectImage() {

    let buttonLabels = ['Select from galery', 'Use camera'];

    const options: ActionSheetOptions = {
      title: 'Make a choice',
      buttonLabels: buttonLabels,
      addCancelButtonWithLabel: 'Cancel',
      androidTheme: 4
    }

    this.actionSheet.show(options).then((buttonIndex: number) => {
      if (buttonIndex == 1) {
        this.takePicture(this.camera.PictureSourceType.PHOTOLIBRARY);
      } else if (buttonIndex == 2) {
        this.takePicture(this.camera.PictureSourceType.CAMERA);
      }
    });

  }


  copyFileToLocalDir(namePath: string, currentName: string, newFileName: string) {

    this.file.copyFile(namePath, currentName, this.file.dataDirectory, newFileName).then(success => {
      this.lastImage = newFileName;
    }, error => {
      console.log(error);
    });

  }


  takePicture(sourceType: any) {

    const options: CameraOptions = {
      quality: 100,
      sourceType: sourceType,
      saveToPhotoAlbum: false,
      correctOrientation: true,
      cameraDirection: 1,
      allowEdit: true,
      targetHeight: 300,
      targetWidth: 300
    };

    this.camera.getPicture(options).then(imageData => {

      this.clickedImage = (<any>window).Ionic.WebView.convertFileSrc(imageData);


      if (this.platform.is('android') && sourceType === this.camera.PictureSourceType.PHOTOLIBRARY) {

        this.filePath.resolveNativePath(imageData).then(filePath => {
          const correctPath = filePath.substr(0, filePath.lastIndexOf('/') + 1);
          const currentName = imageData.substring(imageData.lastIndexOf('/') + 1, imageData.lastIndexOf('?'));
          this.copyFileToLocalDir(correctPath, currentName, this.createFileName());
        });

      } else {

        const currentName = imageData.substr(imageData.lastIndexOf('/') + 1);
        const correctPath = imageData.substr(0, imageData.lastIndexOf('/') + 1);
        this.copyFileToLocalDir(correctPath, currentName, this.createFileName());

      }

      this.uploadImageData();

    });

  }


  uploadImageData() {

    var targetPath = this.pathForImage(this.lastImage);
    var filename = this.lastImage;


    const fileTransfer: FileTransferObject = this.transfer.create();

    let options: FileUploadOptions = {
      fileKey: "file",
      fileName: filename,
      chunkedMode: false,
      mimeType: "multipart/form-data",
      params : {'fileName': filename}
    }


    fileTransfer.upload(targetPath, upload_url, options)
      .then((data) => {

        this.newdata = JSON.parse(data.response);
        if (this.newdata.success) {
          this.global.presentAlert("Success", this.newdata.message);
        } else {
          this.global.presentAlert("Error", this.newdata.message);
        }

      }, (err) => {
        this.global.presentAlert("Error", JSON.stringify(err));
      })

  }

有人能帮我吗?或者给我指出正确的方向

多谢各位

<?php

$xresponse = 0;
$xmessage = "";

$emparray = array();

if ( !empty( $_FILES ) ) 
{

    $target_path = urldecode($_FILES["file"]["name"]);
    $filename = stripslashes($target_path);
    $image_name = time() . "_" . $filename;

    if ( move_uploaded_file( $_FILES['file']['tmp_name'], "/uploads/profile/" . $image_name ) ) {

        $success = true;
        $message = "Upload success";

    } else {

        $success = false;
        $message = $image_name;

    }

} else {

    $success = false;
    $message = "No image selected.";

}


echo json_encode( 
    $emparray = array(
        'success' => $success,
        'message'=> $message
    )
);
<ion-header class="pages">
  <ion-toolbar class="bg-grad-lightblue">
    <ion-title>
      <span>My profile</span>
    </ion-title>
  </ion-toolbar>
</ion-header>

<ion-content class="bg-lightblue">

  <section class="app-container">
    <ion-grid class="ptop">
      <ion-row>
        <ion-col size="12">
          <ion-avatar class="avatar_circle">
            <img src="{{this.img}}" alt="" [hidden]="clickedImage">
            <img [src]="clickedImage" [hidden]="!clickedImage" />
          </ion-avatar>

          <ion-card>
            <ion-card-content>
              <ion-button color="grad-btn-small bg-grad-gray" expand="block" (click)="selectImage()">
                <span class="ion-text-left">Upload image</span></ion-button>
            </ion-card-content>
          </ion-card>

        </ion-col>
      </ion-row>
    </ion-grid>
  </section>

</ion-content>
Ionic:

   Ionic CLI                     : 6.12.0 (C:\Users\User\AppData\Roaming\npm\node_modules\@ionic\cli)
   Ionic Framework               : @ionic/angular 5.3.1
   @angular-devkit/build-angular : 0.901.12
   @angular-devkit/schematics    : 9.1.12
   @angular/cli                  : 9.1.12
   @ionic/angular-toolkit        : 2.3.0

Cordova:

   Cordova CLI       : 10.0.0
   Cordova Platforms : 6.0.0, android 9.0.0, browser
   Cordova Plugins   : cordova-plugin-ionic-keyboard 2.2.0, cordova-plugin-ionic-webview 4.2.1, (and 18 other plugins)

Utility:

   cordova-res : 0.14.0
   native-run  : 1.2.2

System:

   NodeJS : v14.4.0 (C:\Program Files\nodejs\node.exe)
   npm    : 6.14.5
   OS     : Windows 10