想要将JPG二进制体数据保存到文件系统中OpenShift.但不知何故收到的信息将被转换.你知道为什么吗?node.js是否可能将数据视为文本并对其进行编码/解码?
var myServer = http.createServer(function(request, response)
{
var data = '';
request.on('data', function (chunk){
data += chunk;
});
request.on('end',function(){
var date = new Date();
var url_parts = url.parse(request.url,true);
if(url_parts.pathname == '/setImage') {
if(data != null && data.length > 0) {
fs.writeFile('/var/lib/openshift/555dd1415973ca1660000085/app-root/data/asset/' + url_parts.query.filename, data, 'binary', function(err) {
if (err) throw err
console.log(date + ' File saved. ' + url_parts.query.filename + ' ' + data.length)
response.writeHead(200)
response.end()
})
}
}
Run Code Online (Sandbox Code Playgroud)
您正在data使用字符串进行初始化,因此向其添加chunk"s" +=也会将块转换为字符串(这取决于字符编码).
相反,你应该将这些块作为一个数组收集Buffer并用于Buffer.concat()创建最终的Buffer:
var chunks = [];
request.on('data', function (chunk){
chunks.push(chunk);
});
request.on('end', function() {
var data = Buffer.concat(chunks);
...
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42 次 |
| 最近记录: |