我是离子学和角度学方面的新手,我希望有一个用于离子学测试的小项目,该项目可以通过post方法上传图像,而nodejs表示文件图像。...
但是当我运行时,在输入中显示[uploader]的错误...
有我的home.html代码
<ion-header>
<ion-toolbar>
<ion-buttons slot="start">
<ion-menu-button></ion-menu-button>
</ion-buttons>
<ion-title>
Home
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<div class="container">
<input type="file" name="photo" ng2FileSelect [uploader]="uploader" />
<button type="button" class="btn btn-success btn-s"
(click)="uploader.uploadAll()"
[disabled]="!uploader.getNotUploadedItems().length" >
Upload an Image
</button>
</div>
<ion-card>
<ion-card-header>
<img src="http://localhost:3000/images/home.jpg" alt="">
</ion-card-header>
</ion-card>
</ion-content>
这是我的家。
import { Component } from '@angular/core';
import { HttpClient, HttpEventType } from '@angular/common/http';
// import {DomSanitizer} from '@angular/platform-browser';
import { FileUploader, FileSelectDirective } from 'ng2-file-upload';
const URL = 'http://localhost:3000/images/';
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
})
export class HomePage {
title = 'ng8fileupload';
public uploader: FileUploader = new FileUploader({ url: URL,
itemAlias: 'photo' });
public db: any;
public image: any;
base64Image;
fileData: File = null;
constructor(private http: HttpClient,) {
}
ngOnInit() {
this.uploader.onAfterAddingFile = (file) => { file.withCredentials
= false; };
this.uploader.onCompleteItem = (item: any, response: any, status:
any, headers: any) => {
console.log('ImageUpload:uploaded:', item, status, response);
alert('File uploaded successfully');
};
}
}
这是我的app.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';
import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';
import { FileSelectDirective, FileUploadModule } from 'ng2-file-
upload';
import { FormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
import { HttpClientModule } from '@angular/common/http';
@NgModule({
declarations: [
AppComponent
],
entryComponents: [],
imports: [
BrowserModule,
HttpClientModule,
FileUploadModule,
FormsModule,
IonicModule.forRoot(),
AppRoutingModule,
],
providers: [
StatusBar,
SplashScreen,
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
],
bootstrap: [AppComponent]
})
export class AppModule {}
和此服务器端
const path = require('path');
const express = require('express');
const multer = require('multer');
const bodyParser = require('body-parser')
const app = express();
const DIR = '/images';
let storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, DIR);
},
filename: (req, file, cb) => {
cb(null, file.fieldname + '-' + Date.now() + '.' + path.extname(file.originalname));
}
});
let upload = multer({storage: storage});
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8100');
res.setHeader('Access-Control-Allow-Methods', 'POST');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-
With,content-type');
res.setHeader('Access-Control-Allow-Credentials', true);
next();
});
app.get('/api', function (req, res) {
res.end('file catcher example');
});
app.post('/api/upload',upload.single('photo'), function (req, res) {
if (!req.file) {
console.log("No file received");
return res.send({
success: false
});
} else {
console.log('file received');
return res.send({
success: true
})
}
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, function () {
console.log('Node.js server is running on port ' + PORT);
});
请帮助我
答案 0 :(得分:0)
在home.ts文件组件装饰器中,添加您所使用的文件Uploader包的指令。如下所示:
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
directives: [FILE_UPLOAD_DIRECTIVES]
})
也如下所述更改导入行:
import { FileUploader, FILE_UPLOAD_DIRECTIVES } from 'ng2-file-upload';
还要在app.module.ts中更改导入行!
我确定这应该可行!