Просмотр исходного кода

WIP: refactor attachment

ensure not to use res.redirect and to use res.pipe stream
Yuki Takei 7 лет назад
Родитель
Сommit
cc22d2afcc
1 измененных файлов с 7 добавлено и 2 удалено
  1. 7 2
      src/server/routes/attachment.js

+ 7 - 2
src/server/routes/attachment.js

@@ -3,6 +3,9 @@ const logger = require('@alias/logger')('growi:routes:attachment');
 
 
 const path = require('path');
 const path = require('path');
 const fs = require('fs');
 const fs = require('fs');
+const util = require('util');
+const https = require('https');
+const httpsGet = util.promisify(https.get);
 const urljoin = require('url-join');
 const urljoin = require('url-join');
 
 
 const ApiResponse = require('../util/apiResponse');
 const ApiResponse = require('../util/apiResponse');
@@ -75,15 +78,17 @@ module.exports = function(crowi, app) {
 
 
     // TODO consider page restrection
     // TODO consider page restrection
 
 
+    res.set('Content-Type', attachment.fileFormat);
+
     try {
     try {
       const file = await findDeliveryFile(attachment);
       const file = await findDeliveryFile(attachment);
 
 
       // redirect if string
       // redirect if string
       if (typeof file === 'string') {
       if (typeof file === 'string') {
-        return res.redirect(file);
+        const httpsGetResponse = await httpsGet(file);
+        return res.pipe(httpsGetResponse);
       }
       }
 
 
-      res.set('Content-Type', file.contentType);
       return res.send(ApiResponse.success(file.data));
       return res.send(ApiResponse.success(file.data));
     }
     }
     catch (e) {
     catch (e) {