我有一个节点-快递应用程序。在那里,我试图调用一个API,它响应一个原始的xlsx对象作为
'Content-Type':'应用程序/八位流;charset=; UTF-8'
编写如何调用API的代码:
var unirest = require("unirest");
var reqClient = unirest("POST", "https://api.application.com/getExcel");
reqClient.headers({ "Authorization": "Bearer " + req.session.passport.user.token,
"content-type": req.headers['content-type'], "application/json"});
reqClient.type("json");
reqClient.send(JSON.stringify(requestbody));
reqClient.end(function(res) {
if (res.error) throw new Error(res.error);
console.log(res.body);
});
现在我正试图用这些数据做两件事。
let data = res.body // res is the response coming from the API
let buf = Buffer.from(data);
excelfile = fs.createWriteStream("result.xlsx");
excelfile.write(buf);
excelfile.end();
let data = res.body // res is the response coming from the API
let buf = Buffer.from(data);
response.write(buf); //response is the response to the request to ui
response.end();
因此,在这两种情况下,文件都会损坏。
但是API响应是完美的,因为当它被UI直接使用时,xlsx文件正在正确生成。
处理二进制数据时,必须将编码设置为null
reqClient.encoding(null)
js prettyprint-override">reqClient.encoding(null)
reqClient.end(function(res) {
if (res.error) {
return response.status(500).send('error');
}
// res.body is now a buffer
response.write(res.body);
response.end();
});
否则,数据将被转换为UTF-8,您不能从UTF-8转换回二进制并获得相同的数据,这就是您正在做的:
Buffer.from(res.body)
推荐的方法是直接使用流,我没有看到在unirest
中以简单的方式做到这一点的方法,我建议使用请求
或get
,这样您可以。管道
直接到一个文件或表达式res
我不清楚它们是什么,也不知道什么时候使用它们。 在这个例子中,我有一个REST客户端,我想发送一个文件(.zip文件),如果我使用其中任何一种类型,会发生什么 我猜application/octet-stream相当于application/zip,这只是为了向另一方提供有关传输数据的提示,文件以某种方式进行了编码 多部分/表单数据以某种方式破坏数据,您可以通过其特定的mime类型传递“多个数据”
问题内容: 我正在尝试使用Java方法从数据库中获取以下xml,但出现错误 用于解析xml的代码 数据 错误 我读了一些线程,这是因为xml中有一些特殊字符。如何解决这个问题? 问题答案: 如何解决这个问题? 使用正确的字符编码读取数据。错误消息表示您正在尝试以UTF-8格式读取数据(故意或因为这是未指定的XML文件的默认编码),但实际上它采用的是其他编码,例如ISO-8859-1或Windows
最近我为下载创建了一个子域,我希望浏览器下载文件,而不是查看文件。为此,我在文件: 在Firefox和GoogleChrome上,它可以正常工作,但微软浏览器-Internet Explorer和微软Edge都忽略了MIME类型,而是查看它们。我怎样才能强迫他们也下载这些文件呢?
我有一个第三方服务,它用文件向我的Django应用程序发出POST请求。要成功上传到Django应用程序,请求必须具有“多部分/表单数据”内容类型,但在我的案例和请求中,内容类型是“八位流”。文件总是空的。我怎么能在Django中接收八位流内容类型的文件?
我写一个服务器端应用程序与嵌入jetty接收一些请求从第三方客户端。客户端将一些小文件上传到服务器。但是我很惊讶地看到,客户端并没有上传文件数据作为应用程序/八位流,而是上传了一个json作为应用程序/json,其中包括文件的所有元数据,并在一个字段中将所有数据作为字符串 {“_id”:“水果”,“名称”:“水果”,“_shasum”:“4954f1f8b4a8cbf9ea6b675face476
问题内容: 我有一个包含阿拉伯字符的xml文件。尝试解析文件时,出现异常,MalformedByteSequenceException:2字节UTF-8序列的无效字节2。我使用POI DOM来解析文档。 日志是 该异常仅在Windows Machine中出现,在Linux Machine中不出现。我该如何解决此问题。任何建议都应是可取的。 问题答案: 我已解决问题,方法是使用UTF8格式创建XML