我的查询
如何将某些内容写入支持浏览器的文件
我尝试了什么
我使用brfs
这捆绑了一个操作fileRead的输出,并添加了\替换为文件中的实际数据。
但是在处理完文件内容后,我需要用另一个名字写这个文件。 为此,我有以下声明
fileStream.writeFileSync(fileName, doc);
但上面的fileStream不会被brfs操纵(只有fileStream.readFileSync('file')
才能用brfs更新
请帮我写回浏览器的文件
更新
我是NodeJS的新手。下面我放置了代码 - 方法名称ProcessFile
- 这工作正常。
但是,当我使用这种方法在浏览器上执行功能时,我遇到了问题。
当我执行命令browserify -t brfs main.js -o bundle.js
时
在bundle.js中,方法ProcessFile
(位于下方)转换如下:
B'coz of transformation#1&上面的#2,错误(不支持对象fs)得到解决
- #3仍然会抛出错误(SCRIPT5009:'fileStream'未定义)
以下方法ProcessFile
的功能:
将新内容(流)写入另一个文件并将其保存在某个位置
守则
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
}