Node.js Angular2 ExpressJs-文件上载到服务器
Angular-2我正在尝试将文件上载到服务器。下面的代码将文件上载到服务器 如何链接到我的mongodb文档?上传文件时,我希望将其链接到特定文档 另外,我如何在UI中提供链接以从服务器下载上传的文件 组件技术Node.js Angular2 ExpressJs-文件上载到服务器,node.js,mongodb,express,angular,Node.js,Mongodb,Express,Angular,Angular-2我正在尝试将文件上载到服务器。下面的代码将文件上载到服务器 如何链接到我的mongodb文档?上传文件时,我希望将其链接到特定文档 另外,我如何在UI中提供链接以从服务器下载上传的文件 组件技术 @Component({ selector: 'aptcontent', template: ` <div> <input type="file" (change)="fileChangeEvent($event)" placehol
@Component({
selector: 'aptcontent',
template: `
<div> <input type="file" (change)="fileChangeEvent($event)" placeholder="Upload file..."></div>
<div >
<a (click)="upload()">Upload Docs</a>
</div>
`,
directives: [ROUTER_DIRECTIVES]
})
export class AptContentComponent implements OnInit {
data: any;
filesToUpload: Array<File>;
constructor(private apartmentService: ApartmentService, private sharedService: SharedService, params: RouteParams) {
this.filesToUpload = [];
}
ngOnInit() {}
upload(){
console.log('upload button clicked');
this.makeFileRequest("http://localhost:3000/upload", [], this.filesToUpload).then((result) => {
console.log(result);
}, (error) => {
console.error(error);
});
}
fileChangeEvent(fileInput: any){
this.filesToUpload = <Array<File>> fileInput.target.files;
}
makeFileRequest(url: string, params: Array<string>, files: Array<File>) {
return new Promise((resolve, reject) => {
var formData: any = new FormData();
var xhr = new XMLHttpRequest();
for(var i = 0; i < files.length; i++) {
formData.append("uploads[]", files[i], files[i].name);
}
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
resolve(JSON.parse(xhr.response));
} else {
reject(xhr.response);
}
}
}
xhr.open("POST", url, true);
xhr.send(formData);
});
}
}
代码在服务器上创建一个uploads文件夹,并转储文件类型为.file的文件,该文件不是实际上载的.jpg文件 我也在尝试做同样的事情,下面是我的解决方案(不确定这是否是最好的方法) 服务器js:
var formidable = require('formidable');
var fs = require('fs');
app.post('/upload', function(req, res){
var form = new formidable.IncomingForm();
form.multiples = false;
form.uploadDir = path.join(__dirname, '/public/uploads');
form.on('file', function(field, file) {
fs.rename(file.path, path.join(form.uploadDir, file.name));
});
form.on('error', function(err) {
console.log('An error has occured: \n' + err);
});
form.on('end', function() {
res.end('success');
});
form.parse(req);
});
应用程序组件:
import { Component, OnInit, NgZone } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: 'js/app/app.component.html'
})
export class AppComponent {
filesToUpload: Array<File>;
constructor() {
this.filesToUpload = [];
}
upload() {
this.makeFileRequest("http://localhost:3000/upload", [], this.filesToUpload).then((result) => {
console.log(result);
}, (error) => {
console.error(error);
});
}
fileChangeEvent(fileInput: any){
this.filesToUpload = <Array<File>> fileInput.target.files;
}
makeFileRequest(url: string, params: Array<string>, files: Array<File>) {
return new Promise((resolve, reject) => {
var formData: any = new FormData();
var xhr = new XMLHttpRequest();
for(var i = 0; i < files.length; i++) {
formData.append("uploads[]", files[i], files[i].name);
}
xhr.open("POST", url, true);
xhr.send(formData);
});
}
}
}
从'@angular/core'导入{Component,OnInit,NgZone};
@组成部分({
选择器:“我的应用程序”,
templateUrl:'js/app/app.component.html'
})
导出类AppComponent{
filesToUpload:数组;
构造函数(){
this.filesToUpload=[];
}
上传(){
此.makeFileRequest(“http://localhost:3000/upload,[],this.filesToUpload)。然后((结果)=>{
控制台日志(结果);
},(错误)=>{
控制台错误(error);
});
}
fileChangeEvent(fileInput:any){
this.filesToUpload=fileInput.target.files;
}
makeFileRequest(url:string,params:Array,files:Array){
返回新承诺((解决、拒绝)=>{
var formData:any=new formData();
var xhr=new XMLHttpRequest();
对于(var i=0;i
注意:这是使用强大而非multer如何编写代码下载此上传文件?
import { Component, OnInit, NgZone } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: 'js/app/app.component.html'
})
export class AppComponent {
filesToUpload: Array<File>;
constructor() {
this.filesToUpload = [];
}
upload() {
this.makeFileRequest("http://localhost:3000/upload", [], this.filesToUpload).then((result) => {
console.log(result);
}, (error) => {
console.error(error);
});
}
fileChangeEvent(fileInput: any){
this.filesToUpload = <Array<File>> fileInput.target.files;
}
makeFileRequest(url: string, params: Array<string>, files: Array<File>) {
return new Promise((resolve, reject) => {
var formData: any = new FormData();
var xhr = new XMLHttpRequest();
for(var i = 0; i < files.length; i++) {
formData.append("uploads[]", files[i], files[i].name);
}
xhr.open("POST", url, true);
xhr.send(formData);
});
}
}
}