首页 > 解决方案 > 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�&gt;''�;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数据库得到的错误。

读取错误

我尝试过使用responseTypeasblobdocumentin axios 函数,但 bot 给出了同样的错误。

这是服务器返回的标头和响应, 响应 响应标头

后端是 Laravel,它返回给定的存储文件,

return response()->file(storage_path('app/backups/RtyhguRvB8YbdhE.sqlite' , [
    'Content-Type' => 'application/x-sqlite3',
    'Content-Disposition' =>  'attachment;filename=gstpro.sqlite'
]);

根据从服务器接收到的标头,我注意到服务器通过gzip压缩来压缩文件。让我知道是否有一些解决方法。

标签: node.jslaravelsqliteaxiosfs

解决方案


推荐阅读