使用 Ionic Native 上传文件 [英] File upload using Ionic Native
本文介绍了使用 Ionic Native 上传文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用 Android 的 ionic native.问题是,在控制台中显示 [object Object] Uploaded Successfully,但我的服务器上没有上传任何内容.
I am trying to use ionic native from Android. The problem is, in console it says [object Object] Uploaded Successfully, but nothing is uploaded on my server.
我在浏览器中检查了网络选项卡,它甚至没有调用上传 URL.
I checked network tab in browser, it is not even calling the upload URL.
下面是我的 home.html
代码:
<ion-content padding>
<ion-item>
<p>{{imageURI}}</p>
<button ion-button color="secondary" (click)="getImage()">Get Image</button>
</ion-item>
<ion-item>
<h4>Image Preview</h4>
<img src="{{imageFileName}}" *ngIf="imageFileName" alt="Ionic File" width="300" />
</ion-item>
<ion-item>
<button ion-button (click)="uploadFile()">Upload</button>
</ion-item>
</ion-content>
home.ts 代码:
import { Component } from '@angular/core';
import { NavController, LoadingController, ToastController } from 'ionic-angular';
import { FileTransfer, FileUploadOptions, FileTransferObject } from '@ionic-native/file-transfer';
import { Camera, CameraOptions } from '@ionic-native/camera';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
imageURI:any;
imageFileName:any;
constructor(public navCtrl: NavController,
private transfer: FileTransfer,
private camera: Camera,
public loadingCtrl: LoadingController,
public toastCtrl: ToastController) {}
getImage() {
const options: CameraOptions = {
quality: 100,
destinationType: this.camera.DestinationType.FILE_URI,
sourceType: this.camera.PictureSourceType.PHOTOLIBRARY
}
this.camera.getPicture(options).then((imageData) => {
this.imageURI = imageData;
}, (err) => {
console.log(err);
this.presentToast(err);
});
}
uploadFile() {
let loader = this.loadingCtrl.create({
content: "Uploading..."
});
loader.present();
const fileTransfer: FileTransferObject = this.transfer.create();
let options: FileUploadOptions = {
fileKey: 'ionicfile',
fileName: 'ionicfile',
chunkedMode: false,
mimeType: "image/jpeg",
headers: {}
}
fileTransfer.upload(this.imageURI, 'http://example.com/upload2.php', options)
.then((data) => {
console.log(data+" Uploaded Successfully");
// this.imageFileName = "http://192.168.0.7:8080/static/images/ionicfile.jpg"
loader.dismiss();
this.presentToast("Image uploaded successfully");
}, (err) => {
console.log(err);
loader.dismiss();
this.presentToast(err);
});
}
presentToast(msg) {
let toast = this.toastCtrl.create({
message: msg,
duration: 6000,
position: 'bottom'
});
toast.onDidDismiss(() => {
console.log('Dismissed toast');
});
toast.present();
}
}
推荐答案
这是适合我的脚本!
在html中
<input type="file" name="file" (change)="upload($event)" />
在ts文件中
upload(str:any)
{
const formData = new FormData();
this.image=str.target.files[0];
formData.append('files[]', this.image);
console.log(formData,this.image);
this.http.post("http://localhost/test/test.php",formData)
.subscribe((data:any)=>{
console.log(data);
})
console.log(str);
}
这里有一个 PHP 文件:
Bonus here is the PHP file:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_FILES['files'])) {
$errors = [];
$path = 'uploads/';
$extensions = ['jpg', 'jpeg', 'png', 'gif'];
$all_files = count($_FILES['files']['tmp_name']);
$file_tmp = $_FILES['files']['tmp_name'][0];
$file_type = $_FILES['files']['type'][0];
$file_size = $_FILES['files']['size'][0];
$file_ext = strtolower(end(explode('.', $_FILES['files']['name'][0])));
$file_name = uniqid().".".$file_ext;
$file = $path . $file_name;
if (empty($errors)) {
move_uploaded_file($file_tmp, $file);
}
if ($errors) print_r($errors);
}
}
这篇关于使用 Ionic Native 上传文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文