出於某種原因,我需要將一些文件(主要是圖像或pdf)存儲到我的數據庫(PG 9.2.20)中。 這些文件是由用戶上傳的,當我將它們下載回來時,它們已損壞。Nodejs,將bin文件作爲BYTEA存儲到pgsql中(損壞的文件)
- 我正在使用nodejs。
- 我存儲該文件的列類型是BYTEA。
這是我如何存儲他們:
const { files, fields } = await asyncBusboy(ctx.req);
const fileName = files[0].filename;
const mimeType = files[0].mimeType;
const bufferedFile = fs.readFileSync(files[0].path, { encoding: 'hex' });
const fileData = `\\x${bufferedFile}`;
//Just a basic insert into with knex.raw
const fileId = await storageModel.create(fields.name, fields.description, fileName, mimeType, fileData, ctx.user);
這就是我如何找回我的文件:
const file = await storageModel.find(ctx.params.fileId, ctx.user);
ctx.body = Buffer.from(file.file_bin, 'hex');
ctx.set('Content-disposition', `attachment; filename=${file.file_name}`);
文件被破壞,當然,如果我仔細一看,上傳的文件和我下載的文件是不同的。 見六角截圖,有在下載一個開始一些額外的數據:http://imgur.com/a/kTRAB
後一些更多的測試,我可以告訴大家,問題在於到KOA的一部分,當我把緩衝到ctx.body。它被損壞了(???)
編輯:我與揚鞭UI工作:https://github.com/swagger-api/swagger-ui/issues/1605
我正在用Swagger客戶端測試我的路線。當我通過在我的瀏覽器中調用url進行測試它的工作原理... – thesearentthedroids