将内容写入文件-fs.writeFileSync - 在浏览器中

时间:2017-02-28 08:36:31

标签: javascript node.js browser

我的查询

如何将某些内容写入支持浏览器的文件

我尝试了什么

我使用brfs

管理fs.readFileSync在浏览器中工作

这捆绑了一个操作fileRead的输出,并添加了\替换为文件中的实际数据。

但是在处理完文件内容后,我需要用另一个名字写这个文件。 为此,我有以下声明

fileStream.writeFileSync(fileName, doc);

但上面的fileStream不会被brfs操纵(只有fileStream.readFileSync('file')才能用brfs更新

请帮我写回浏览器的文件

更新

我是NodeJS的新手。下面我放置了代码 - 方法名称ProcessFile - 这工作正常。 但是,当我使用这种方法在浏览器上执行功能时,我遇到了问题。

当我执行命令browserify -t brfs main.js -o bundle.js时 在bundle.js中,方法ProcessFile(位于下方)转换如下:

  1. 以下标记为STT_FS的声明已删除
  2. 标记为STT_FS_READ的语句包含一些应该从给定文件中读取的缓冲区二进制数据
  3. 但标记为STT_FS_WRITE的声明保持不变
  4. B'coz of transformation#1&上面的#2,错误(不支持对象fs)得到解决

    - #3仍然会抛出错误(SCRIPT5009:'fileStream'未定义)

    以下方法ProcessFile的功能:

    1. 它读取SVG文档,
    2. 使用指定的颜色\ mode ==>填充\阴影处理文件中的图像流
    3. 将新内容(流)写入另一个文件并将其保存在某个位置

      守则

    4. function ProcessFile(filePath,targetColor,fillColorMode)
      {
          var fileStream = require('fs'); //STT_FS
          var xmldoc = require('xmldoc');
          var stringMethods = require('string');
          // Load the svg File from the givenfile path.
          var filePathStr = fileStream.readFileSync('E:\\NodeJS\\macPump.svg').toString();//STT_FS_READ
          //convert svg file to xml document
          var doc = new xmldoc.XmlDocument(filePathStr);
          //Collect the Groups from base SVG File
          var groupNodes = doc.childrenNamed('g');
          var sourceAttr ;
          var fillAttr;
          //If the groups  are not available in svg file,  then set all elements as children
          if(groupNodes.length===0) { groupNodes=doc.children; }
          //if target color mode is hollow then set target color to transparent
          if(fillColorMode.toLowerCase()==="hollow") {targetColor='transparent';}
         //iterate each groupNodes element here to change the color
         for (var groupCount = 0; j = groupNodes.length, groupCount < j; groupCount++) 
         {
           var styleElement =groupNodes[groupCount].children;
           //if the groupNodes element does not contains sub node then get the style attribute value directly .
           if(styleElement.length===0)
           {
               styleElement=groupNodes[groupCount];
               fillAttr=styleElement.attr['style'];
               if(fillColorMode.toLowerCase()!=="original")
               {
                      // get updated target color here for basic type svg files
                      styleElement.attr['style']=GetFillColor(fillAttr,targetColor,fillColorMode);
               }
           }//end of if
           else
           {
              for(var styleCount=0; k=styleElement.length,styleCount<k;styleCount++)
              {
                  fillAttr=styleElement[styleCount].attr['fill'];
      
                 if(fillColorMode.toLowerCase()!=="original")
                  {
                          // get fill element color here
                         var fillElementColor=ChangeFillElementColor(fillAttr,targetColor,fillColorMode);
                          if(fillElementColor != undefined && fillElementColor != 'none')                          
                            { 
                              styleElement[styleCount].attr['fill']='#'+fillElementColor;
                            }
                  }var styleAtt=styleElement[styleCount].children;
                  for(var t=0; l=styleAtt.length,t<l;t++)
                   {
                       sourceAttr= styleAtt[t].attr['style'];
                       var convertedStyleColor;
                      if(sourceAttr != 'none')
                      {
                          if(fillColorMode.toLowerCase()==="hollow")
                           {
                                  //get here transparent color
                                 convertedStyleColor=ConvertStringToColor(targetColor);
                           }
                           else
                           {
                                  // Extract the style value and apply color accordingly gievn in tag color
                                  sourceAttr= GetColor(sourceAttr)
                                  convertedStyleColor=  GetUpdatedTargetColor(sourceAttr,targetColor,fillColorMode);
                           }                         
                           if(fillColorMode.toLowerCase()!=="original")
                           {
                              styleAtt[t].attr['style']='stop-color:#'+convertedStyleColor;
                           }
                      }
      
                  }//end of for
      
              }//end of for
            } //end of else      
          }//end of for
      
          //get filename here
          var newFileName= [] ;
          newFileName[0]=filePath;
          var arr=newFileName[0].split('\\');
          //ger the file name from given path 
          var  fileName = 'ReColored' + arr[arr.length-1];
          //save here new svg file with target color
          fileStream.writeFileSync(fileName, doc);//STT_FS_WRITE
      }
      

0 个答案:

没有答案