从离子应用程序的计算机中选择图像以将其提供给服务器

问题描述 投票:0回答:1

我的离子应用有时在浏览器中使用,我需要上传一些图像。我已经实现了一个代码来选择我的文件,然后我将图像放入了formData类型。我正在尝试使用发布请求将文件上传到服务器,但是我不知道该如何做。

[当我在php代码中收到文件时,我将其插入到数据库中,我在数据库中得到了一个Blob文件,但我认为它不是图像,这是变小的方法...

html文件:

  <input
  style="display: none"
  type="file" (change)="onFileChanged($event)"
  #fileInput>
<button (click)="fileInput.click()">Select File</button>
<button (click)="onUpload()">Upload!</button>

ts文件:

onFileChanged(event) {
    this.selectedFile = <File>event.target.files[0];
    console.log(this.selectedFile);
  }

  onUpload() {
    // upload code goes here
      // this.http is the injected HttpClient
  let uploadData = new FormData();
  uploadData.append('file', this.selectedFile, this.selectedFile.name);
  console.log(this.selectedFile);
   this.http.post(this.server + 'saveExo.php', this.selectedFile)
     .subscribe(resData => {
         console.log(resData);
     });
  }

php文件:

<?php


header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE');
header('Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization');
header('Content-Type: application/json; charset=UTF-8');

include "db.php";

$postjson = json_decode(file_get_contents('php://input'), true);
$today = date('Y-m-d');

if ( isset( $_POST) ) {
    $result = json_encode(array('receive' => 'ok'));
    $query = mysqli_query($mysqli, "INSERT INTO EXO SET 
    image = '$_POST'");


    echo $result;
} else {
    $result = json_encode(array('receive' => 'nothing'));
    echo $result;
}

?>

这是我进入数据库的内容:enter image description here

谢谢您的帮助,我认为这是将图像保存到数据库中的错误方法。

php angular ionic-framework blob
1个回答
0
投票

我的解决方案是使用base64在客户端将映像转换为base64,然后将其存储在服务器上。要再次查看,请将base64发送到客户端,然后使用base64插件再次进行转换。

© www.soinside.com 2019 - 2024. All rights reserved.