【问题标题】:upload image ionic 3上传图片离子3
【发布时间】:2018-05-09 13:14:45
【问题描述】:

我正在 ionic 3 中开发一个应用程序,需要使用在 lumen 框架中创建的 api 将图像上传到服务器。 上传图片的请求是: 图片从相机中点击并转换为base64。

let base64Image = 'data:image/jpeg;base64,' + imageData;

然后我使用 FileUpload 上传图片

import { FileTransfer, FileUploadOptions, FileTransferObject } from '@ionic-native/file-transfer';

buildHeadersDeals(){
    this.header = new Headers();
    this.header.append('Authorization', 'Basic ' 
                                      +btoa("test:test"));
}

uploadPhoto(image, token) {
    this.buildHeadersDeals();

    url = 'http://192.168.2.12/api/upload?token="+token;

    const fileTransfer: FileTransferObject = this.transfer.create();
    let options: FileUploadOptions = {
             fileKey: 'photo',
             fileName: image.substr(image.lastIndexOf('/')+1),
             chunkedMode: true,
             mimeType: "image/jpeg",
             headers: this.header,
          }

    return fileTransfer.upload(image, encodeURI(url), options)
                .then((data) => {
                       console.log(data);
                       return data;
           }, (err) => {
               console.log(err);
         });
   }

我的 api 端是:

public function upload(Request $request) {
     if ($request->hasFile('photo')) {
      $image = $request->file('photo');
      $response['image'] = $image;
      return response()->json($response,200);
    } 
}

我有两个问题:

1) 我总是将照片设为 null ($request->file('photo'))

2) 有人可以告诉我将令牌作为参数发送吗,下面的代码不起作用:

let options: FileUploadOptions = {
             fileKey: 'photo',
             fileName: image.substr(image.lastIndexOf('/')+1),
             chunkedMode: true,
             mimeType: "image/jpeg",
             headers: this.header,
             params: {
                'token': 'sffsdhnzchvh'
             }
          }

谢谢

【问题讨论】:

    标签: laravel ionic-framework ionic3 lumen


    【解决方案1】:

    我已经安装了 "cordova-plugin-camera" : "^4.0.2" 和 "cordova-plugin-file": "^6.0.1"

    函数在这里调用-> this.selectImage(this.camera.PictureSourceType.CAMERA);

    selectImage(selection: any) {
    var options: any;
    
    options = {
      quality: 75,
      destinationType: this.camera.DestinationType.DATA_URL,
      sourceType: selection,
      allowEdit: true,
      encodingType: this.camera.EncodingType.JPEG,     
      saveToPhotoAlbum: false
    };
    
    this.camera.getPicture(options).then((imgUrl) => {
    
      if (options.destinationType == this.camera.DestinationType.FILE_URI) {
        console.log(imgUrl,'if');
        var sourceDirectory = imgUrl.substring(0, imgUrl.lastIndexOf('/') + 1);
        var sourceFileName = imgUrl.substring(imgUrl.lastIndexOf('/') + 1, imgUrl.length);
        sourceFileName = sourceFileName.split('?').shift();
        this.File.copyFile(sourceDirectory, sourceFileName, cordova.file.externalApplicationStorageDirectory, sourceFileName).then((result: any) => {
          this.imageNewPath = result.nativeURL;
    
          // do api call here
    
        }, (err) => {
          console.log(JSON.stringify(err));
        })
      }
      else {
        console.log(imgUrl,'else');
        this.imageNewPath = "data:image/jpeg;base64," + imgUrl;
        //do here 
      }
    }, (err) => {
      console.log("Error in choosing image :" + JSON.stringify(err));
    });
    
    }
    

    【讨论】:

      猜你喜欢
      • 2018-05-07
      • 1970-01-01
      • 2019-02-10
      • 2011-08-27
      • 1970-01-01
      • 2021-03-27
      • 1970-01-01
      • 2012-04-30
      • 2016-11-22
      相关资源
      最近更新 更多