我是 Node 和面向服务器代码的新手,正在尝试获取存储在服务器中的多个 svg 文件。
这是我使用 jQuery 的客户端代码:
$.ajax({
url: someURL,
data: someData
})
.done(function(data) {
console.log('data got', data);
callback(null, data);
})
.fail(function() {
callback(new Error('Cannot access files'));
});
这是我的代码服务器端:
// links is an array of links to the different svg files
var svgs = [];
async.eachSeries(links, function(link, next) {
fs.readFile(link, function(err, svg) {
svgs.push(svg);
next(err);
});
}, function(err) {
if (err) {
response.writeHead(500);
response.end(JSON.stringify(err));
return;
}
response.writeHead(200);
response.end(svgs); // Doesn't work
// response.end(svgs[0]); // Works
});
只要我只向浏览器发送一个文件(这似乎是一个 Buffer 实例),一切似乎都工作正常,但是当我尝试将多个文件作为数组发送时,交易成功但我什么也没有返回的数据。这可能与我尝试发送的 MIME 类型有关,但我找不到如何处理它。
最佳答案
您必须先将 svgs
转换为 String
或 Buffer
。一种选择是将其字符串化为 JSON:
response.writeHead(200, {
'Content-Type': 'application/json'
});
response.end(JSON.stringify(svgs));
这是因为response.write()
,这response.end()
正在调用以处理数据
(svgs
),不接受Array
。
chunk
can be a string or a buffer. Ifchunk
is a string, the second parameter specifies how to encode it into a byte stream. By default theencoding
is'utf8'
.
而 fs.readFile()
提供的每个 svg
都是一个 Buffer
,因此写入 svgs[0 ]
。
关于javascript - Node js - 如何将多个 SVG 文件提供给浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22415678/