在接收图像时处理客户端请求中的元数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在接收图像时处理客户端请求中的元数据相关的知识,希望对你有一定的参考价值。
在尝试处理上传的图片并将其写入文件时,我遇到了问题。通常这种方式非常好:
req.on('data', function (data) {
body += data;
wstream.write(data);
});
// end process data
req.on('end', function () {
wstream.end();
});
在这种情况下,写入的文件头看起来像这样:
PNG ...后跟二进制数据。
但在某些情况下,写文件看起来像这样:
--72e245e8-38eb-41e8-9118-fc0405e4837c Content-Type:multipart / form-data Content-Disposition:form-data;命名=图像;文件名= picture.jpg;文件名* = UTF-8''picture.jpg
可以想象,在我将元数据删除为内容类型等之前,这些图片不再有效。
但在我这样做之后,图片功能齐全且可用。
我试图访问请求数据并调用toString方法来替换“不需要的”部分,但是我完全弄乱了该输出文件的内容编码,它变得无法使用。
data = data.toString(/---.*/g), "");
任何想法如何做到这一点?
答案
我通过模块强大的帮助解决了我的问题。
var formidable = require('formidable');
var util = require('util');
form.parse(req, function(err, fields, files) {
logger.debug("Received upload: " + util.inspect({fields: fields, files: files}));
});
form.on('fileBegin', function (name, file){
file.path = "MyPathToDestinationFile";
logger.debug("File upload started for file '" + file.path + "'");
});
form.on('end', function() {
logger.debug("File upload finished for file");
// Send response to client
});
form.on('error', function(err) {
logger.debug("Failed to finish upload due to '" + err + "'");
// Send error to client
});
以上是关于在接收图像时处理客户端请求中的元数据的主要内容,如果未能解决你的问题,请参考以下文章
.NET下使用Socket进行TCP传输时数据发送或接收不全