diff --git a/boot/boot.js b/boot/boot.js index f1f6e4906..11286678d 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -1902,8 +1902,16 @@ $tw.loadTiddlersFromFile = function(filepath,fields) { extensionInfo = $tw.utils.getFileExtensionInfo(ext), type = extensionInfo ? extensionInfo.type : null, typeInfo = type ? $tw.config.contentTypeInfo[type] : null, - data = fs.readFileSync(filepath,typeInfo ? typeInfo.encoding : "utf8"), - tiddlers = $tw.wiki.deserializeTiddlers(ext,data,fields), + fileSize = fs.statSync(filepath).size, + data; + if(fileSize > $tw.config.maxEditFileSize) { + data = "File " + filepath + "not loaded because it is too large"; + console.log("Warning: " + data); + ext = ".txt"; + } else { + data = fs.readFileSync(filepath,typeInfo ? typeInfo.encoding : "utf8"); + } + var tiddlers = $tw.wiki.deserializeTiddlers(ext,data,fields), metadata = $tw.loadMetadataForFile(filepath); if(metadata) { if(type === "application/json") { diff --git a/boot/bootprefix.js b/boot/bootprefix.js index 4dae1b28f..92785d823 100644 --- a/boot/bootprefix.js +++ b/boot/bootprefix.js @@ -19,6 +19,10 @@ var _bootprefix = (function($tw) { $tw = $tw || Object.create(null); $tw.boot = $tw.boot || Object.create(null); +// Config +$tw.config = $tw.config || Object.create(null); +$tw.config.maxEditFileSize = 100 * 1024 * 1024; // 100MB + // Detect platforms if(!("browser" in $tw)) { $tw.browser = typeof(window) !== "undefined" && typeof(document) !== "undefined" ? {} : null;