Node.js 在nodejs中合并2个日志文件
我在服务器中保存了一个文件,假设其路径为Node.js 在nodejs中合并2个日志文件,node.js,angular,multer,Node.js,Angular,Multer,我在服务器中保存了一个文件,假设其路径为data/x.log。我将新文件上载到服务器: import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Observable } from 'rxjs'; import { IResponse } from 'src/app/interfaces/response.interface'; import {
data/x.log
。我将新文件上载到服务器:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { IResponse } from 'src/app/interfaces/response.interface';
import { environment } from 'src/environments/environment';
const ENDPOINT = environment.apiUrl + '/log';
@Injectable()
export class HttpUploadService {
constructor(
private http: HttpClient,
) { }
public uploadLogFile(file: File): Observable<IResponse> {
const baseUrl: string = ENDPOINT;
const postData = new FormData();
postData.append('file', file);
return this.http.post<IResponse>(baseUrl, { postData });
}
}
在我的第一种方法中,我尝试使用multer
package:
const storage = multer.diskStorage({
destination(req, file, cb) {
cb(null, './data');
},
filename(req, file, cb) {
cb(null, `x.log`);
}
});
但据我所知,它只会覆盖文件内容而不进行合并
我该怎么做呢?我还没听说上传库支持append。您很可能必须手动执行此操作,而无需使用在磁盘上自动存储文件的库 例如,您可以使用busboy以流的形式访问传入文件,然后将其附加到所需的文件中。获得传入流后,可以使用以下内容附加到现有文件:
const fs = require("fs");
const destination = fs.createWriteStream("data/x.log", {
flags: "a" // "a" for append
});
incomingFile.pipe(destination);
const fs = require("fs");
const destination = fs.createWriteStream("data/x.log", {
flags: "a" // "a" for append
});
incomingFile.pipe(destination);