前提・実現したいこと
node.jsでアプリを作成しています。
S3上のとあるバケットにzipファイルが添付されたメールが保存されており、
このファイルを解凍して、中身の画像ファイルやテキストファイルを操作したいです。
現在、バケット内のメールをダウンロードして、from、to、subject、date、filename、attachmentsが取れており、
params.attachmentsを「node-zip」を使って解凍したいのですが、ググってみても参考記事が見当たらず、
どうすればよいか手が止まってしまいました。。
「node-zip」でなくても良いのですが、何か良い手段はないでしょうか。
paramsの中身は以下のようになっています。(一部省略)
console
1{ 2 filename: 'test.zip', 3 content: <Buffer 50 4b 03 04 14... more bytes>, 4 from: 'test@gmail.com', 5 to: 'test@gmail.com', 6 subject: 'test', 7 date: 2021-08-10T08:59:00.000Z, 8 text: 'これはテストです', 9 attachments: [ 10 { 11 type: 'attachment', 12 content: <Buffer 50 4b 03 04 14... 350132 more bytes>, 13 contentType: 'application/x-zip-compressed', 14 partId: '2', 15 release: null, 16 contentDisposition: 'attachment', 17 filename: 'test.zip', 18 contentId: '<f_krq476bn0>', 19 cid: 'f_krq476bn0', 20 headers: [Map], 21 checksum: '83db1b529532216f65b9c86161526b02', 22 size: 350182 23 } 24 ] 25}
試していること
js
1const nodeZip = require('node-zip'); 2 3const filetype = this.checkfile(params.filename) ← 拡張子チェックを実装してます 4let files; 5if (filetype = ZIP) { 6 files = await this.unzip(params.attachments); ← ここを実装したい 7} else { 8 console.log(`filetype error: ${params.filename}`); 9} 10 11for (let i = 0; i < files.length; i++;) { ←解凍した中身をループで処理 12 filetype = this.checkfile(files[i]) { 13 switch (filetype) { 14 case JPG: 15 jpgファイルの時の処理 16 break; 17 case TXT: 18 textファイルの時の処理 19 break; 20 case CSV: 21 csvファイルの時の処理 22 break; 23 default: 24 break; 25 } 26 } 27}
試したといっても、肝心の部分が何もできておらず恐縮ですが、
ご教授いただければ幸いです。
よろしくお願い致します。
見てみたサイト
・https://www.npmjs.com/package/node-zip
・https://zebevogue.hatenadiary.org/entry/20121103/1351924627 など
あなたの回答
tips
プレビュー