file-controller.js 13.1 KB
var express = require('express');
var router = express.Router();
var client = require('../../client');
var api = require('../api_file').url;
var multer = require('multer');
var fs = require('fs');
var request = require('request');

var upload = multer({ dest: __dirname + '/../../../uploads/' });
var staticPath = __dirname + '/../../../public/uploads/';
var singleUpload = upload.fields([{ name: 'uploadFile', maxCount: 1 }]);
var singleUploads = upload.fields([{ name: 'uploadFile', maxCount: 6 }]);

function guname(prefix) {
  return prefix + '-' + Math.random().toString(32).substr(2) + (new Date - 0).toString(32);
}
//star 10-26
router.post('/public_file_uploadByRichText',singleUpload,function(req,res){
  var fileType = req.body.type || 'img';
  var file = req.files.uploadFile[0];
  var newFile = file.originalname.replace(/^.+(\.[a-z0-9]+)$/i, guname(fileType) + '$1');

  console.log(req.body,req.body.type);
  console.log(file);
  console.log(fs.createReadStream(file.path))
  /*api.public_file_uploadByRichText,
    */
  // var url = api.file_upload_file + req.session.user.token;
  // url='http://192.168.3.6:8898/drugcloud_api/public/file/uploadByRichText'
  var url=api.public_file_uploadByRichText + req.session.user.token;
  var r=request.post(url,function optionalCallback(err,httpres,body){
    body=JSON.parse(body);
    res.send(body.data)
  })
  var form = r.form();  
  form.append('uploadFile', fs.createReadStream(file.path),{filename:newFile});


})

/**
   单图片上传
*/
router.post('/upload/image', singleUpload, function (req, res) {
  try { //异常捕获
    var fileType = req.body.type || 'img';
    var file = req.files.uploadFile[0];
    var newFile = file.originalname.replace(/^.+(\.[a-z0-9]+)$/i, guname(fileType) + '$1');


    // 文件后缀
    var filename = file.originalname;
    var suffixName = filename.substring(filename.lastIndexOf('.') + 1);
    if(suffixName=='' || ( 
        suffixName.toLowerCase()!="jpeg" 
        && suffixName.toLowerCase()!="jpg" 
        && suffixName.toLowerCase()!="bmp" 
        && suffixName.toLowerCase()!="png" 
        && suffixName.toLowerCase()!="gif")){ 
      var tipObj = {errorCode:9999,message:'请上传正确的图片格式,例如jpeg,jpg,bmp,png,gif!'};
      res.end(JSON.stringify(tipObj));
    }


    // 默认供应商端的文件上传  
    var url = api.file_upload_file + req.session.user.token;

    // 建立request连接,准备上传form表单数据
    var r = request.post(url, function optionalCallback(err, httpResponse, body) {
      fs.unlink(file.path, function(err){
        if(err){
         throw err;
        }
        console.log('文件:'+file.path+'删除成功!');
      })
      res.end(body);
    });


    var form = r.form();  
    form.append('uploadFile', fs.createReadStream(file.path), {filename: newFile});
  }catch(err){
    var tipObj = {errorCode:9999,message:'请重新选择图片!'};
    res.end(JSON.stringify(tipObj));        
  }    
});

/**
   文件上传
   使用场景:供应商产品使用说明书pdf的上传
*/
router.post('/upload/file', singleUpload, function (req, res) {  
    try { //异常捕获
      var fileType = req.body.type || 'pdf';
      var fileType = 'attachment';
      var file = req.files.uploadFile[0];

      // 文件后缀
      var filename = file.originalname;
      var suffixName = filename.substring(filename.lastIndexOf('.') + 1);
      if(suffixName=='' || "pdf"!=suffixName.toLowerCase()){ 
        var tipObj = {errorCode:9999,message:'请上传正确的文件格式!'};
        res.end(JSON.stringify(tipObj));
      }else{
        var newFile = filename.replace(/^.+(\.[a-z0-9]+)$/i, guname(fileType) + '$1');
      
        // 文件上传路径
        var url = api.file_upload_file + req.session.user.token;

        var r = request.post(url, function optionalCallback(err, httpResponse, body) {
          fs.unlink(file.path, function(err){
            if(err){
             throw err;
            }
            console.log('文件:'+file.path+'删除成功!');
          })
          res.end(body);
        });

        var form = r.form();  
        form.append('uploadFile', fs.createReadStream(file.path), {filename: newFile});
      }
    }catch(err){
      var tipObj = {errorCode:9999,message:'请重新选择文件!'};
      res.end(JSON.stringify(tipObj));        
    }
});

/**
   商品导入 - excel文件
   exceltype :默认上传供应商端商品
               如果为'med',则是导入医院端商品明细

   返回数据说明:
   导入的商品List对象,提示信息List
*/
router.post('/upload/excel/:exceltype', singleUpload, function (req, res) { 
  try { //异常捕获
      var fileType = req.body.type || 'excel';
      var file = req.files.uploadFile[0];
      
      var filename = file.originalname;
      var suffixName = filename.substring(filename.lastIndexOf('.') + 1);
      if(suffixName=='' || (suffixName.toLowerCase()!='xls' && suffixName.toLowerCase()!='xlsx')){
        var tipObj = {errorCode:9999,message:'请上传Excel文件!'};
        res.end(JSON.stringify(tipObj));
      }else{
        var newFile = filename.replace(/^.+(\.[a-z0-9]+)$/i, guname(fileType) + '$1');
        var exceltype = req.params.exceltype; 

        // 默认供应商端的文件上传  
        var url = api.file_upload_excel_supplier + req.session.user.token;

        // 医院账户导入
       if(exceltype=='hosaccountImpl'){ 
          url = api.file_upload_excel_hosaccountImpl + req.session.user.token;
        } 
         // 供应商账户导入
        if(exceltype=='supaccountImpl'){ 
          url = api.file_upload_excel_supaccountImpl + req.session.user.token;
        }
        
        // 医院端批量导入修改 file_upload_excel_updGoodsImp
         if(exceltype=='updGoodsImp'){ 
          url = api.file_upload_excel_updGoodsImp + req.session.user.token;
        }
        
        if(exceltype=='importApply'){ 
          url = api.file_upload_excel_med_importApply + req.session.user.token;
        } 
        // 调用医院端的商品导入excel
        if(exceltype=='med'){
          url = api.file_upload_excel_med + req.session.user.token;
        }
        // 采购计划商品导入excel
        if(exceltype=='plan'){ 
          url = api.file_upload_excel_med_plan + req.session.user.token;
        } 
        
         if(exceltype=='checkImpl'){ 
            url = api.file_upload_excel_med_stockCheckImpl + req.session.user.token;
        } 
        // 供应商 订单汇总页面 订单导入 excel
        if(exceltype=='cdk'){ 
          url = api.file_upload_excel_med_cdkl + req.session.user.token;
        } 
        if(exceltype=='matchsImp'){ 
          url = api.file_upload_excel_med_matchsImp + req.session.user.token;
        } 

         if(exceltype=='xnmatchsImp'){ 
          url = api.file_upload_excel_med_xnmatchsImp + req.session.user.token;
        }
          // 医院端商品大类
          if(exceltype=='importGoodsCate'){
              url = api.file_user_importGoodsCate + req.session.user.token;
          }
          // 供应商商品大类
          if(exceltype=='importGoodsCateS'){
              url = api.file_supplier_user_importGoodsCate + req.session.user.token;
          }

          // 医院对账单导入
        if(exceltype=='statementImp'){
              url = api.file_upload_excel_statementImp + req.session.user.token;
          }

        // 新版新增采购计划 导入
         if(exceltype=='importTrmedPlanGoods'){
              url = api.file_upload_excel_importTrmedPlanGoods + req.session.user.token;
          }

          // 运营商 药品主数据
          if (exceltype == 'mfmnsdgoodsImpl') {
              url = api.operator_masterdata_mfmnsdgoodsImpl + req.session.user.token;
          }
          // 运营商 药品主数据
          if (exceltype == 'mfmproductionImpl') {
              url = api.operator_masterdata_mfmproductionImpl + req.session.user.token;
          }

          // 运营商 药品主数据
          if (exceltype == 'mfmsdgoodsAndProductionImpl') {
              url = api.operator_masterdata_mfmsdgoodsAndProductionImpl + req.session.user.token;
          }
          // 运营商 医院物资需求发布
          if (exceltype == 'response') {
              url = api.operator_mfdemandpublish_importmfdemandpublish + req.session.user.token;
          }

        // 建立request连接,准备上传form表单数据
        var r = request.post(url, function optionalCallback(err, httpResponse, body) { 
          fs.unlink(file.path, function(err){
            if(err){
             throw err;
            }
            console.log('文件:'+file.path+'删除成功!');
          })
          res.end(body);
        });

        var form = r.form();  
        form.append('uploadFile', fs.createReadStream(file.path), {filename: newFile});
      }  
  }catch(err){
    var tipObj = {errorCode:9999,message:'请重新选择文件!'};
    res.end(JSON.stringify(tipObj));        
  }
});


router.post('/upload/excel/:exceltype/:medguid', singleUpload, function (req, res) { 
  try { //异常捕获
      var fileType = req.body.type || 'excel';
      var file = req.files.uploadFile[0]; 

      var filename = file.originalname;
      var suffixName = filename.substring(filename.lastIndexOf('.') + 1);
      if(suffixName=='' || (suffixName.toLowerCase()!='xls' && suffixName.toLowerCase()!='xlsx')){
        var tipObj = {errorCode:9999,message:'请上传Excel文件!'};
        res.end(JSON.stringify(tipObj));
      }else{
        var newFile = filename.replace(/^.+(\.[a-z0-9]+)$/i, guname(fileType) + '$1');
        var exceltype = req.params.exceltype; 
        var medguid = req.params.medguid;

        // 默认供应商端的文件上传  
        var url = api.file_upload_excel_supplier + req.session.user.token;
 
        if(exceltype=='goodsImp'){ 
          url = api.file_upload_excel_med_goodsImp  + req.session.user.token+'&medguid='+ medguid;     
          //      
        } 

        // 建立request连接,准备上传form表单数据
        console.log(url)
        var r = request.post(url, function optionalCallback(err, httpResponse, body) { 
          fs.unlink(file.path, function(err){
            if(err){
             throw err;
            }
            console.log('文件:'+file.path+'删除成功!');
          })
          res.end(body);
        });

        var form = r.form();  
        form.append('uploadFile', fs.createReadStream(file.path), {filename: newFile});
      }  
  }catch(err){
    var tipObj = {errorCode:9999,message:'请重新选择文件!'};
    res.end(JSON.stringify(tipObj));        
  }
});

/**
  多图片上传

**/
router.post('/uploads/image',singleUploads,function (req, res) {
  try { //异常捕获
      var fileType = req.body.type || 'img';


      // 默认供应商端的文件上传  
      var url = api.file_upload_file + req.session.user.token;
      var maxNum = req.body.maxNum;
      var fileLength = req.files.uploadFile.length;
      if(fileLength>maxNum){
          var tipObj = {errorCode:9999,message:'您还可以上传'+maxNum+'张图片!'};
          res.end(JSON.stringify(tipObj));
      }else{
        var isReturn = false;
        // 文件后缀
        for(var i=0;i<req.files.uploadFile.length;i++){
          var file = req.files.uploadFile[i];
          var filename = file.originalname;
          var suffixName = filename.substring(filename.lastIndexOf('.') + 1);
          if(suffixName=='' || (
            suffixName.toLowerCase()!="jpeg" 
            && suffixName.toLowerCase()!="jpg" 
            && suffixName.toLowerCase()!="bmp"
            && suffixName.toLowerCase()!="png" 
            && suffixName.toLowerCase()!="gif")){ 
            var tipObj = {errorCode:9999,message:'请上传正确的图片格式,例如jpeg,jpg,bmp,png,gif!'};
            res.end(JSON.stringify(tipObj));
            isReturn = true;
            break;
          }
        }

        // 如果没有错误
        if(!isReturn){
          // 建立request连接,准备上传form表单数据
          var r = request.post(url, function optionalCallback(err, httpResponse, body) {
            for(var i=0;i<req.files.uploadFile.length;i++){
              var file = req.files.uploadFile[i];
              fs.unlink(file.path, function(err){
                if(err){
                 throw err;
                }
                console.log('文件:'+file.path+'删除成功!');
              })
            }
            res.end(body);
          });

          var form = r.form();  
          for(var i=0;i<req.files.uploadFile.length;i++){
            var file = req.files.uploadFile[i];
            var newFile = file.originalname.replace(/^.+(\.[a-z0-9]+)$/i, guname(fileType) + '$1');
            form.append('uploadFile', fs.createReadStream(file.path), {filename: newFile});
          }
        }    
      }
  }catch(err){
    var tipObj = {errorCode:9999,message:'请重新选择图片!'};
    res.end(JSON.stringify(tipObj));        
  }
});


// 获得文件下载的路径
router.get('/dowloadExcel/:exceltype', function(req, res, next) {
  var exceltype = req.params.exceltype;
  var backUrl = api.file_down_excel_supplier;
  if(exceltype=='med'){
    backUrl = api.file_down_excel_med;
  }
  res.send(backUrl);
});


module.exports = router;