node.js - Axios POST 请求返回附件,存储它会在 Node.js 中给出 mulformed 文件异常
问题描述
我有一个 POST 路由,它返回附件。fs
问题是,当我调用路由时,它会正确执行,但是在使用Node将附件存储到本地存储之后会给出Mulformed File Exception。我将sqlite3
数据库作为响应附件获取,并且在使用fs
. 这个想法是从服务器下载文件并将其作为节点应用程序的恢复副本放在本地存储中。
Axios 函数
function restoreDatabase(PATH , UID , TOKEN , URL){
return new Promise((resolve , reject) => {
axios({
URL,
method: 'POST',
responseType: 'document',
headers: {
'Authorization': TOKEN
},
data: {
uid: UID
}
}).then(response => {
console.log(response);
fs.writeFile(PATH , response.data , (err) => {
if(err){
console.log(err);
reject(err);
}
resolve();
})
}).catch(e => {
console.log(e);
})
});
}
这是我从回复中得到的,
SQLite format 3@ $$.4 ��< � o��W�>''�;tablepayment_modespayment_modes CREATE TABLE
`payment_modes` (`id` integer not null primary key autoincrement, `name` text,
`is_details_required` boolean, `is_runtime` boolean, `additional` text, `created_at` datetime not
null default CURRENT_TIMESTAMP, `updated_at` datetime not null default CURRENT_TIMESTAMP)�9�ItablechallanchallanCREATE TABLE `challan` (`id` integer not null primary key autoincrement, `customer_id` integer, `taxable` float, `due_date` date, `payment_date` date, `status` undefined, `created_at` datetime not null default CURRENT_TIMESTAMP, `updated_at` datetime not null default CURRENT_TIMESTAMP)�} ))�5tablepurchase_partypurchase_partyCREATE TABLE `purchase_party` (`id` integer not null primary key autoincrement, `name` varchar(255), `phone` varchar(255), `address` varchar(255), `business` varchar(255), `gst` varchar(255) default 'NA', `state_id` integer, `created_at` datetime not null default CURRENT_TIMESTAMP, `updated_at` datetime not null default CURRENT_TIMESTAMP)� �tablesalessales CREATE TABLE `sales` (`id` integer not null primary key autoincrement, `paymentable_type` integer, `paymentable_id` integer, `product_id` integer, `price` float, `qty` integer, `discount` float, `cgst` float, `sgst` float, `igst` float, `taxable` float, `_ref` integer, `created_at` datetime not null default CURRENT_TIMESTAMP, `updated_at` datetime not null default CURRENT_TIMESTAMP)�^�tableinvoiceinvoice CREATE TABLE `invoice` (`id` integer not null primary key autoincrement, `customer_id` integer, `taxable` float, `due_date` date, `payment_date` date, `paymentmode_id` integer, `additional` text, `iid` text, `created_at` datetime not null default CURRENT_TIMESTAMP, `updated_at` datetime not null default CURRENT_TIMESTAMP)�]�tablesettingsettingCREATE TABLE `setting` (`id` integer not null primary key autoincrement, `title` varchar(255), `info` text, `key` varchar(255), `value` text, `type` varchar(255), `category` varchar(255), `additional` text, `created_at` datetime not null default CURRENT_TIMESTAMP, `updated_at` datetime not null default CURRENT_TIMESTAMP)��tablestockstockCREATE TABLE `stock` (`id` integer not null primary key autoincrement, `product_id` integer, `stock` integer default '0', `status` integer, `created_at` datetime not null default CURRENT_TIMESTAMP, `updated_at` datetime not null default CURRENT_TIMESTAMP)�1�5tableproductsproductsCREATE TABLE `products` (`id` integer not null primary key autoincrement, `name` varchar(255), `price` float default '0', `UOM1` integer, `UOM2` integer, `conversion` float default '1', `UOM` integer, `tax` float default '0', `hsn` varchar(255) default 'NA', `discount` float default '0', `created_at` datetime not null default CURRENT_TIMESTAMP, `updated_at` datetime not null default CURRENT_TIMESTAMP)�f�+tableunitsunitsCREATE TABLE `units` (`id` integer not null primary key autoincrement, `name` varchar(255), `created_at` datetime not null default CURRENT_TIMESTAMP, `updated_at` datetime not null default CURRENT_TIMESTAMP)�n�+tablecustomerscustomersCREATE TABLE `customers` (`id` integer not null primary key autoincrement, `name` varchar(255), `phone` varchar(255), `address` varchar(255), `business` varchar(255), `gst` varchar(255) default 'NA', `state_id` integer, `created_at` datetime not null default CURRENT_TIMESTAMP, `updated_at` datetime not null default CURRENT_TIMESTAMP)P++Ytablesqlite_sequencesqlite_sequenceCREATE TABLE sqlite_sequence(name,seq)��tablestatesstatesCREATE TABLE `states` (`id` integer not null primary key autoincrement, `name` varchar(255), `prefix` varchar(255), `code` varchar(255), `created_at` datetime not null default CURRENT_TIMESTAMP, `updated_at` datetime not null default CURRENT_TIMES %�r-��y< � � � S ��T��b& � � x ? � � S ��^��X
在将 Axios 写入response.body
文件后,这是我通过读取sqlite3
数据库得到的错误。
我尝试过使用responseType
asblob
和document
in axios 函数,但 bot 给出了同样的错误。
后端是 Laravel,它返回给定的存储文件,
return response()->file(storage_path('app/backups/RtyhguRvB8YbdhE.sqlite' , [
'Content-Type' => 'application/x-sqlite3',
'Content-Disposition' => 'attachment;filename=gstpro.sqlite'
]);
根据从服务器接收到的标头,我注意到服务器通过gzip
压缩来压缩文件。让我知道是否有一些解决方法。
解决方案
推荐阅读
- github - 添加 github 自托管运行器会导致 /proc/self/exe 运行 config.sh 错误
- android - 键盘打开时搜索视图在工具栏后面向上移动如何在键入时显示搜索视图?
- amazon-web-services - 更改 Google Domains 上的名称后未反映更改
- jwt - 在 Azure AKS 中更改 istio 授权策略
- ruby-on-rails - 用铁轨上的条件弹拨
- java - 使用 GSON 将 JSON 反序列化为 Java 会导致空字段
- nginx - www 到非 www,但对于变量 server_name
- html - 如何更改垫子按钮背景颜色并保持颜色淡化
- c# - 如何使用 EF Core(数据库优先方法)在 asp.net 核心中的多个表上调用存储过程?
- c++ - 失踪 ';' 在 'boost::interprocess::offset_t' 和缺少类型说明符之前 - 假定为 int (boost 1.74.0, Visual Studio 2013)