mirror of
https://github.com/leanote/desktop-app.git
synced 2025-10-14 23:22:40 +00:00
本地添加图片成功, add resource 待完善
This commit is contained in:
9
node_modules/api.js
generated
vendored
9
node_modules/api.js
generated
vendored
@@ -86,13 +86,17 @@ var Api = {
|
|||||||
fs.writeFile('/Users/life/Desktop/aa.png', resp.body);
|
fs.writeFile('/Users/life/Desktop/aa.png', resp.body);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
// 测试
|
||||||
uploadImage: function() {
|
uploadImage: function() {
|
||||||
var data = {
|
var data = {
|
||||||
foo: 'bar',
|
foo: 'bar',
|
||||||
image: { file: '/Users/life/Desktop/aa.png', content_type: 'image/png' }
|
cc: [1,2,3,3],
|
||||||
|
dd: {name: 'life', age: 18},
|
||||||
|
image: { file: '/Users/life/Desktop/imageplus.png', content_type: 'image/png' }
|
||||||
}
|
}
|
||||||
needle.post('http://localhost/phpinfo.php', data, { multipart: true }, function(err, resp, body) {
|
needle.post('http://localhost/phpinfo.php', data, { multipart: true }, function(err, resp, body) {
|
||||||
// needle will read the file and include it in the form-data as binary
|
// needle will read the file and include it in the form-data as binary
|
||||||
|
console.log(resp.body);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
getSyncNotebooks: function(afterUsn, maxEntry, callback) {
|
getSyncNotebooks: function(afterUsn, maxEntry, callback) {
|
||||||
@@ -338,7 +342,8 @@ var Api = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
// 添加
|
// 添加笔记
|
||||||
|
// 要把文件也发送过去
|
||||||
addNote: function(note, callback) {
|
addNote: function(note, callback) {
|
||||||
var me = this;
|
var me = this;
|
||||||
// note.NotebookId是本的, 要得到远程的
|
// note.NotebookId是本的, 要得到远程的
|
||||||
|
53
node_modules/common.js
generated
vendored
53
node_modules/common.js
generated
vendored
@@ -1,6 +1,5 @@
|
|||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var User = require('user');
|
var User = require('user');
|
||||||
var File = require('file');
|
|
||||||
var Evt = require('evt');
|
var Evt = require('evt');
|
||||||
var ObjectId = require('objectid');
|
var ObjectId = require('objectid');
|
||||||
|
|
||||||
@@ -35,56 +34,6 @@ var Common = {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
// FileReaderWeb 是 web上的FileReader, 可能与nodejs这个有冲突
|
|
||||||
pasteImage: function(event, FileReaderWeb, callback) {
|
|
||||||
var me = this;
|
|
||||||
var items = (event.clipboardData || event.originalEvent.clipboardData).items; // 可能有多个file, 找到属于图片的file
|
|
||||||
// find pasted image among pasted items
|
|
||||||
var blob;
|
|
||||||
for (var i = 0; i < items.length; i++) {
|
|
||||||
if (items[i].type.indexOf("image") === 0) {
|
|
||||||
blob = items[i].getAsFile();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// console.log("paste images");
|
|
||||||
// console.log(blob);
|
|
||||||
// load image if there is a pasted image
|
|
||||||
if (blob) {
|
|
||||||
// console.log("??");
|
|
||||||
var reader = new FileReaderWeb();
|
|
||||||
// console.log(">>")
|
|
||||||
// console.log(reader);
|
|
||||||
// console.log(">>")
|
|
||||||
reader.onloadend = function() {
|
|
||||||
console.log(reader);
|
|
||||||
// 这个事件在读取结束后,无论成功或者失败都会触发
|
|
||||||
if (reader.error) {
|
|
||||||
console.log(reader.error);
|
|
||||||
} else {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
reader.onload = function(e) {
|
|
||||||
// 上传之
|
|
||||||
// log('result');
|
|
||||||
// log(reader.result);
|
|
||||||
var ret = reader.result
|
|
||||||
ret = ret.replace(/^data:image\/\w+;base64,/, "")
|
|
||||||
// log(User.getCurUserImagesPath());
|
|
||||||
var filename = me.uuid() + '.png';
|
|
||||||
fs.writeFile(User.getCurUserImagesPath() + '/' + filename, new Buffer(ret, 'base64'), function(err) {
|
|
||||||
if(err) {
|
|
||||||
log(err);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// 保存
|
|
||||||
var relativePath = User.getCurUserImagesAppPath() + '/' + filename;
|
|
||||||
File.addImage(relativePath);
|
|
||||||
|
|
||||||
callback && callback('app://leanote/' + relativePath);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
reader.readAsDataURL(blob);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
module.exports = Common;
|
module.exports = Common;
|
||||||
|
5
node_modules/evt.js
generated
vendored
5
node_modules/evt.js
generated
vendored
@@ -3,6 +3,11 @@ var User = require('user');
|
|||||||
|
|
||||||
function log(o) {console.log(o)}
|
function log(o) {console.log(o)}
|
||||||
var Evt = {
|
var Evt = {
|
||||||
|
port: 8008,
|
||||||
|
localUrl: 'http://127.0.0.1:8008',
|
||||||
|
getImageLocalUrl: function(fileId) {
|
||||||
|
return this.localUrl + '/api/file/getImage?fileId=' + fileId;
|
||||||
|
},
|
||||||
// 项目绝对地址
|
// 项目绝对地址
|
||||||
getBasePath: function() {
|
getBasePath: function() {
|
||||||
return process.cwd();
|
return process.cwd();
|
||||||
|
83
node_modules/file.js
generated
vendored
83
node_modules/file.js
generated
vendored
@@ -21,7 +21,6 @@ type File struct {
|
|||||||
Path string `Path` // the file path
|
Path string `Path` // the file path
|
||||||
IsDefaultAlbum bool `IsDefaultAlbum`
|
IsDefaultAlbum bool `IsDefaultAlbum`
|
||||||
CreatedTime time.Time `CreatedTime`
|
CreatedTime time.Time `CreatedTime`
|
||||||
|
|
||||||
FromFileId bson.ObjectId `bson:"FromFileId,omitempty"` // copy from fileId, for collaboration
|
FromFileId bson.ObjectId `bson:"FromFileId,omitempty"` // copy from fileId, for collaboration
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -29,6 +28,62 @@ type File struct {
|
|||||||
|
|
||||||
// 文件服务
|
// 文件服务
|
||||||
var File = {
|
var File = {
|
||||||
|
|
||||||
|
// FileReaderWeb 是 web上的FileReader, 可能与nodejs这个有冲突
|
||||||
|
pasteImage: function(event, FileReaderWeb, callback) {
|
||||||
|
var me = this;
|
||||||
|
var items = (event.clipboardData || event.originalEvent.clipboardData).items; // 可能有多个file, 找到属于图片的file
|
||||||
|
// find pasted image among pasted items
|
||||||
|
var blob;
|
||||||
|
for (var i = 0; i < items.length; i++) {
|
||||||
|
if (items[i].type.indexOf("image") === 0) {
|
||||||
|
blob = items[i].getAsFile();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// console.log("paste images");
|
||||||
|
// console.log(blob);
|
||||||
|
// load image if there is a pasted image
|
||||||
|
if (blob) {
|
||||||
|
// console.log("??");
|
||||||
|
var reader = new FileReaderWeb();
|
||||||
|
// console.log(">>")
|
||||||
|
// console.log(reader);
|
||||||
|
// console.log(">>")
|
||||||
|
reader.onloadend = function() {
|
||||||
|
console.log(reader);
|
||||||
|
// 这个事件在读取结束后,无论成功或者失败都会触发
|
||||||
|
if (reader.error) {
|
||||||
|
console.log(reader.error);
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
reader.onload = function(e) {
|
||||||
|
// 上传之
|
||||||
|
// log('result');
|
||||||
|
// log(reader.result);
|
||||||
|
var ret = reader.result
|
||||||
|
ret = ret.replace(/^data:image\/\w+;base64,/, "")
|
||||||
|
// log(User.getCurUserImagesPath());
|
||||||
|
var filename = Common.uuid() + '.png';
|
||||||
|
fs.writeFile(User.getCurUserImagesPath() + '/' + filename, new Buffer(ret, 'base64'), function(err) {
|
||||||
|
if(err) {
|
||||||
|
log(err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 保存
|
||||||
|
var relativePath = User.getCurUserImagesAppPath() + '/' + filename;
|
||||||
|
|
||||||
|
// 保存到数据库中
|
||||||
|
File.addImage(relativePath, function(newImg) {
|
||||||
|
callback && callback(Evt.getImageLocalUrl(newImg.FileId));
|
||||||
|
// callback && callback('app://leanote/' + relativePath);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
reader.readAsDataURL(blob);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
// path是相对于项目路径
|
// path是相对于项目路径
|
||||||
addImage: function(path, callback) {
|
addImage: function(path, callback) {
|
||||||
var me = this;
|
var me = this;
|
||||||
@@ -36,7 +91,7 @@ var File = {
|
|||||||
me._addImage(Common.objectId(), absolutePath, callback);
|
me._addImage(Common.objectId(), absolutePath, callback);
|
||||||
},
|
},
|
||||||
|
|
||||||
_addImage: function(fileId, absolutePath, callback) {
|
_addImage: function(fileId, absolutePath, callback, isForce) {
|
||||||
// var absolutePath = Evt.getBasePath() + '/' + path;
|
// var absolutePath = Evt.getBasePath() + '/' + path;
|
||||||
// 得到文件大小
|
// 得到文件大小
|
||||||
var stat = fs.statSync(absolutePath);
|
var stat = fs.statSync(absolutePath);
|
||||||
@@ -46,13 +101,18 @@ var File = {
|
|||||||
var ext = names[names.length-1];
|
var ext = names[names.length-1];
|
||||||
var image = {
|
var image = {
|
||||||
FileId: fileId,
|
FileId: fileId,
|
||||||
|
ServerFileId: '',
|
||||||
Path: absolutePath,
|
Path: absolutePath,
|
||||||
Name: name,
|
Name: name,
|
||||||
UserId: User.getCurActiveUserId(),
|
UserId: User.getCurActiveUserId(),
|
||||||
Title: name,
|
Title: name,
|
||||||
Type: ext,
|
Type: ext,
|
||||||
Size: stat && stat.size,
|
Size: stat && stat.size,
|
||||||
|
IsDirty: true, // 本地是新添加的
|
||||||
CreatedTime: new Date()
|
CreatedTime: new Date()
|
||||||
|
};
|
||||||
|
if(isForce) {
|
||||||
|
image.ServerFileId = fileId;
|
||||||
}
|
}
|
||||||
Images.insert(image, function(err, doc) {
|
Images.insert(image, function(err, doc) {
|
||||||
log(err);
|
log(err);
|
||||||
@@ -64,16 +124,22 @@ var File = {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 从服务器上把文件download下来后
|
||||||
|
// 这里的fileId是serverFileId, 本地的FileId也保存为该值
|
||||||
addImageForce: function(fileId, path, callback) {
|
addImageForce: function(fileId, path, callback) {
|
||||||
var me = this;
|
var me = this;
|
||||||
// 先删除之, 可能是本地有记录, 但是文件没了
|
// 先删除之, 可能是本地有记录, 但是文件没了
|
||||||
Images.remove({FileId: fileId}, function() {
|
Images.remove({FileId: fileId}, function() {
|
||||||
me._addImage(fileId, path, callback);
|
me._addImage(fileId, path, callback, true);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
// 获取图片本地路径
|
// 获取图片本地路径
|
||||||
|
// 通过FileId可ServerFileId来查找
|
||||||
|
// 因为图片的链接 有可能是本地添加的, 又有可能是远程的
|
||||||
|
// 如果是远程的, FileId == ServerFileId, 是一样的, 所以不要Or
|
||||||
getImageLocalPath: function(fileId, callback) {
|
getImageLocalPath: function(fileId, callback) {
|
||||||
|
// Images.findOne({$or: {FileId: fileId}, {ServerFileId: fileId}}, function(err, doc) {
|
||||||
Images.findOne({FileId: fileId}, function(err, doc) {
|
Images.findOne({FileId: fileId}, function(err, doc) {
|
||||||
if(!err && doc && doc.Path) { // FileLocalPath是相对于项目的路径
|
if(!err && doc && doc.Path) { // FileLocalPath是相对于项目的路径
|
||||||
callback(true, doc.Path);
|
callback(true, doc.Path);
|
||||||
@@ -81,6 +147,17 @@ var File = {
|
|||||||
callback(false, false);
|
callback(false, false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 得到fileIds所有的images, 为了发送到服务器上
|
||||||
|
getAllImages: function(fileIds, callback) {
|
||||||
|
var me = this;
|
||||||
|
Images.find({$or:[{FileId: {$in: fileIds}}, {ServerFileId: {$in: fileIds}}]}, function(err, images) {
|
||||||
|
if(err || !images) {
|
||||||
|
return callback(false);
|
||||||
|
}
|
||||||
|
callback(images);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
55
node_modules/note.js
generated
vendored
55
node_modules/note.js
generated
vendored
@@ -1,5 +1,7 @@
|
|||||||
var async = require('async');
|
var async = require('async');
|
||||||
var db = require('db');
|
var db = require('db');
|
||||||
|
var File = require('file');
|
||||||
|
var Evt = require('evt');
|
||||||
var User = require('user');
|
var User = require('user');
|
||||||
var Notebook = require('notebook');
|
var Notebook = require('notebook');
|
||||||
var Tag = require('tag');
|
var Tag = require('tag');
|
||||||
@@ -513,16 +515,67 @@ var Note = {
|
|||||||
|
|
||||||
// 获得用户修改的笔记
|
// 获得用户修改的笔记
|
||||||
getDirtyNotes: function(callback) {
|
getDirtyNotes: function(callback) {
|
||||||
|
var me = this;
|
||||||
Notes.find({UserId: User.getCurActiveUserId(), IsDirty: true}, function(err, notes) {
|
Notes.find({UserId: User.getCurActiveUserId(), IsDirty: true}, function(err, notes) {
|
||||||
if(err) {
|
if(err) {
|
||||||
log(err);
|
log(err);
|
||||||
return callback && callback(false);
|
return callback && callback(false);
|
||||||
} else {
|
} else {
|
||||||
callback(notes);
|
// 每一个笔记得到图片, 附件信息和数据
|
||||||
|
async.eachSeries(notes, function(note, cb) {
|
||||||
|
me.getNoteFiles(note.NoteId, note.Content, function(files) {
|
||||||
|
note.Files = files || [];
|
||||||
|
cb();
|
||||||
|
})
|
||||||
|
}, function() {
|
||||||
|
callback(notes);
|
||||||
|
})
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 得到笔记的文件
|
||||||
|
getNoteFiles: function(noteId, content, callback) {
|
||||||
|
// 得到图片信息, 通过内容
|
||||||
|
// http://localhost:8002/api/file/getImage?fileId=xxxxxx, 得到fileId, 查询数据库, 得到图片
|
||||||
|
// console.log(content);
|
||||||
|
// console.log(Evt.localUrl + '/api/file/getImage?fileId=([0-9a-zA-Z]{24})');
|
||||||
|
var reg = new RegExp(Evt.localUrl + "/api/file/getImage\\?fileId=([0-9a-zA-Z]{24})", 'g');
|
||||||
|
var fileIds = [];
|
||||||
|
// var fileIdsMap = {}; // 防止多个
|
||||||
|
while((result = reg.exec(content)) != null) {
|
||||||
|
// result = [所有, 子表达式1, 子表达式2]
|
||||||
|
if(result && result.length > 1) {
|
||||||
|
// console.log(result);
|
||||||
|
var fileId = result[1];
|
||||||
|
fileIds.push(fileId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var files = []; // {localFileId: "must", fileId: "", hasBody: true, filename: "xx.png"}
|
||||||
|
if(fileIds.length > 0) {
|
||||||
|
// 得到所有的图片
|
||||||
|
File.getAllImages(fileIds, function(images) {
|
||||||
|
callback(images);
|
||||||
|
/*
|
||||||
|
if(!images) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for(var i in images) {
|
||||||
|
var image = images[i];
|
||||||
|
files.push({
|
||||||
|
localFileId: image.FileId,
|
||||||
|
fileId: image.ServerFileId,
|
||||||
|
hasBody: image.IsDirty,
|
||||||
|
filename: image.Name,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
callback(false);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
// 在send delete笔记时成功
|
// 在send delete笔记时成功
|
||||||
setNotDirty: function(noteId) {
|
setNotDirty: function(noteId) {
|
||||||
Notes.update({NoteId: noteId}, {$set:{IsDirty: false}})
|
Notes.update({NoteId: noteId}, {$set:{IsDirty: false}})
|
||||||
|
1
node_modules/server.js
generated
vendored
1
node_modules/server.js
generated
vendored
@@ -61,7 +61,6 @@ var Server = {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var realPath = basePath + pathname;
|
var realPath = basePath + pathname;
|
||||||
var ext = path.extname(realPath);
|
var ext = path.extname(realPath);
|
||||||
ext = ext ? ext.slice(1) : 'unknown';
|
ext = ext ? ext.slice(1) : 'unknown';
|
||||||
|
@@ -22,7 +22,12 @@
|
|||||||
<link rel="stylesheet" href="public/js/contextmenu/css/contextmenu.css" type="text/css" />
|
<link rel="stylesheet" href="public/js/contextmenu/css/contextmenu.css" type="text/css" />
|
||||||
<!-- mdeditor -->
|
<!-- mdeditor -->
|
||||||
<link href="public/dist/themes/default.css" rel="stylesheet" />
|
<link href="public/dist/themes/default.css" rel="stylesheet" />
|
||||||
|
<style>
|
||||||
|
html, body {
|
||||||
|
border-radius: 10px;
|
||||||
|
border: 1px solid #000;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
<!-- For Develop writting mod -->
|
<!-- For Develop writting mod -->
|
||||||
<script>
|
<script>
|
||||||
function log(o) {
|
function log(o) {
|
||||||
|
@@ -9,7 +9,8 @@
|
|||||||
"min_width": 400,
|
"min_width": 400,
|
||||||
"min_height": 200,
|
"min_height": 200,
|
||||||
"width": 1100,
|
"width": 1100,
|
||||||
"height": 600
|
"height": 600
|
||||||
|
// "transparent": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ var NoteService = Service.noteService;
|
|||||||
var NotebookService = Service.notebookService;
|
var NotebookService = Service.notebookService;
|
||||||
var TagService = Service.tagService;
|
var TagService = Service.tagService;
|
||||||
var ServerService = require('server');
|
var ServerService = require('server');
|
||||||
|
var FileService = require('file');
|
||||||
|
|
||||||
// 分发服务
|
// 分发服务
|
||||||
// route = /note/notebook
|
// route = /note/notebook
|
||||||
|
@@ -414,7 +414,7 @@ function setEditorContent(content, isMarkdown, preview) {
|
|||||||
|
|
||||||
// 复制图片
|
// 复制图片
|
||||||
function pasteImage(e) {
|
function pasteImage(e) {
|
||||||
Common.pasteImage(e, FileReader, function(url) {
|
FileService.pasteImage(e, FileReader, function(url) {
|
||||||
insertImage(url);
|
insertImage(url);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
19
test.js
19
test.js
@@ -16,23 +16,34 @@ Api.addNotebook({
|
|||||||
Title: "哈哈"
|
Title: "哈哈"
|
||||||
}, function() {});
|
}, function() {});
|
||||||
*/
|
*/
|
||||||
Api.test();
|
Api.uploadImage();
|
||||||
/*
|
/*
|
||||||
User.userId = '54bdc65599c37b0da9000002';
|
User.userId = '54bdc65599c37b0da9000002';
|
||||||
console.log(User.getCurActiveUserId());
|
// console.log(User.getCurActiveUserId());
|
||||||
Note.getDirtyNotes(function(ret) {
|
Note.getDirtyNotes(function(ret) {
|
||||||
console.log(ret);
|
console.log(ret);
|
||||||
});
|
});
|
||||||
*/
|
|
||||||
/*
|
/*
|
||||||
Note.getNoteByServerNoteId("54c6313799c37bdeec000008", function(ret){
|
Note.getNoteByServerNoteId("54c6313799c37bdeec000008", function(ret){
|
||||||
console.log(ret);
|
console.log(ret);
|
||||||
});
|
});
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
// Api.auth('c@a.com', 'abc123');
|
// Api.auth('c@a.com', 'abc123');
|
||||||
// var content = '<img src="http://localhost:9000/api/file/getImage?fileId=54c2083f99c37bea5f000001"> <img src="http://localhost:9000/api/file/getImage?fileId=54c2083f99c37bea5f000001">' + "\n" + '<img src="http://localhost:9000/api/file/getImage?fileId=54c2083f99c37bea5f000001">';
|
// var content = '<img src="http://localhost:9000/api/file/getImage?fileId=54c2083f99c37bea5f000001"> <img src="http://localhost:9000/api/file/getImage?fileId=54c2083f99c37bea5f000001">' + "\n" + '<img src="http://localhost:9000/api/file/getImage?fileId=54c2083f99c37bea5f000001">';
|
||||||
// var reg = new RegExp('<img *src="' + Api.leanoteUrl + '/api/file/getImage', 'g');
|
// var reg = new RegExp('<img *src="' + Api.leanoteUrl + '/api/file/getImage', 'g');
|
||||||
// content = content.replace(reg, '<img src="' + Server.localUrl + '/api/file/getImage');
|
// content = content.replace(reg, '<img src="' + Server.localUrl + '/api/file/getImage');
|
||||||
// console.log(content);
|
// console.log(content);
|
||||||
|
|
||||||
|
/*
|
||||||
|
var content = '<p>lifedddddd</p><p><img src="app://leanote/data/54bdc65599c37b0da9000002/images/1422368307147_2.png" alt="" data-mce-src="app://leanote/data/54bdc65599c37b0da9000002/images/1422368307147_2.png" style="display: block; margin-left: auto; margin-right: auto;"></p><p><img src="http://127.0.0.1:8008/api/file/getImage?fileId=54c7ae27d98d0329dd000000" alt="" data-mce-src="http://127.0.0.1:8008/api/file/getImg?fileId=54c7ae27d98d0329dd000000"></p><p><br></p><p><img src="http://127.0.0.1:8008/api/file/getImage?fileId=54c7ae855e94ea2dba000000" alt="" data-mce-src="http://127.0.0.1:8008/api/file/getImage?fileId=54c7ae855e94ea2dba000000" style="display: block; margin-left: auto; margin-right: auto;"></p><p><br></p><p><br></p>';
|
||||||
|
// http://127.0.0.1:8008/api/file/getImage?fileId=54c7ae27d98d0329dd000000
|
||||||
|
// var reg = new RegExp('http://127.0.0.1:8008/api/file/getImage?fileId=([0-9a-zA-Z]{24})', 'g');
|
||||||
|
var reg = new RegExp("http://127.0.0.1:8008/api/file/getImage\\?fileId=([0-9a-zA-Z]{24})", 'g');
|
||||||
|
var fileIds = [];
|
||||||
|
while((result = reg.exec(content)) != null) {
|
||||||
|
// result = [所有, 子表达式1, 子表达式2]
|
||||||
|
console.log(result);
|
||||||
|
}
|
||||||
|
console.log("??");
|
||||||
|
*/
|
Reference in New Issue
Block a user