# Azure Blob Storage+Multer and Node.js Setting
## Azure Blob申請
(1) 選擇服務:儲存體帳戶

(2) 依專案需求設定申請

(3)新增完成後, 點選名稱進入

(4)新增容器, 可使用code新增, 或是直接在介面設置

(5)存取金鑰>連結字串

(6) Node JS設定-1-新增環境變數

(7) 新建檔案tempUpload.ts(npm需安裝multer,multer-azure-storage)
```TS=1
import * as multer from 'multer';
import * as azureStorage from 'multer-azure-storage';
const tempUploadMiddleware = multer({
storage: new azureStorage({
azureStorageConnectionString: process.env.BLOB_KEY,
containerName: process.env.BLOB_CONTAINER_NAME,
}),
});
export default tempUploadMiddleware;
```
(8)在Routes.ts 加入設定
```TS=1
{
path: '/api/testBlob',
method: 'get',
middlewares: [
tempUploadMiddleware.any(),
TestController.testBlob,
],
},
```
(9)TestController讀取設定
```TS=1
export const testBlob = async (req: Request, res: Response, next: NextFunction) => {
try {
console.log('# req.query:', req.query);
console.log('# req.body:', req.body);
const fileUrls = new Array();
let file;
const fileSize = req.files.length;
for (let i = 0; i < fileSize; i++) {
console.log(req.files[i]);
if (req.files[i].fieldname === 'excelFile') {
file = req.files[i];
fileUrls.push(file.url);
}
}
// @ts-ignore
res.json(JSON.stringify(fileUrls));
} catch (err) {
next(err);
}
};
```
file可使用的參數:
```JSON=1
{
fieldname: 'excelFile',
originalname: 'ExportExcel-Summary_20201030.xlsx',
encoding: '7bit',
mimetype: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
blobName: 'excelFile-e296f27c.xlsx',
container: 'tmsblob',
blob: 'excelFile-e296f27.xlsx',
blobType: 'BlockBlob',
size: '18914',
etag: '"0x8D88C5EAB0F5EA0"',
metadata: {},
url: 'https://tmsstorage1.blob.core.windows.net/tmsblob/excelFile-e296f27c.xlsx'
}
```
(10) Blob storage上傳後的結果
