我是节点js的新手。
我使用节点js编写了一个服务器,它将读取请求数据并将该数据保存到图像文件中。(因为数据本身就是图像数据。)
我写的节点js脚本是:
const http = require('http');
const fs = require('fs');
const server = http.createServer();
server.on('request', function(request, respond) {
var body = '';
filePath = '1.jpg';
request.on('data', function(data) {
body += data;
});
request.on('end', function (){
fs.appendFile(filePath, body, function() {
respond.end();
});
});
});
server.listen(8080);
从同一台机器上的终端,我发出了一个curl命令来发送图像:
curl -X POST --data @tmp.jpg 127.0.0.1:8080
tmp.jpg在我的机器上完美打开。
但是1.jpg(由节点js创建)没有打开。
可能是什么问题?
任何帮助都将受到高度赞赏。
答案 0 :(得分:0)
问题在于你使用curl。要发送二进制数据,请改为使用import { RouterModule, Routes } from '@angular/router';
import { NgModule } from '@angular/core';
import { PagesComponent } from './pages.component';
import { DashboardComponent } from './dashboard/dashboard.component';
import { ManageComponent } from './manage/manage.component';
import { UserComponent } from './user/user.component';
const routes: Routes = [{
// path: '/home',
path:'',
component: PagesComponent,
children: [{
path: 'dashboard',
component: DashboardComponent,
}, {
path: 'ui-features',
loadChildren: './ui-features/ui-features.module#UiFeaturesModule',
},
{
path: 'add-booking',
loadChildren: './add-booking/addbooking.module#AddbookingModule',
},{
path: 'components',
loadChildren: './components/components.module#ComponentsModule',
}, {
path: 'maps',
loadChildren: './maps/maps.module#MapsModule',
}, {
path: 'charts',
loadChildren: './charts/charts.module#ChartsModule',
}, {
path: 'editors',
loadChildren: './editors/editors.module#EditorsModule',
}, {
path: 'forms',
loadChildren: './forms/forms.module#FormsModule',
}, {
path: 'tables',
loadChildren: './tables/tables.module#TablesModule',
},
{
path: 'manage',
component: ManageComponent,
},
{
path: 'user',
component: UserComponent,
},{
path: '',
redirectTo: 'dashboard',
pathMatch: 'full',
}],
}];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
export class PagesRoutingModule {
}
标志:
--data-binary
此外,您需要使用curl -X POST --data-binary @image.jpg 127.0.0.1:8080
代替writeFile
。后者会将每个请求的数据添加到同一个文件中,而该文件将无法作为图像读取。
此外,在处理二进制数据时,我发现使用缓冲区而不是字符串更容易。请求处理如下所示:
appendFile