diff --git a/package.json b/package.json index c13e2d4..44894ca 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "multer": "^1.3.0", "mysql": "^2.11.1", "node-readability": "^2.2.0", + "path": "^0.12.7", "request": "^2.81.0", "supervisor": "^0.11.0", "webshot": "^0.18.0" diff --git a/public/scripts/controllers/settings-controller.js b/public/scripts/controllers/settings-controller.js index edf2e7a..304c48a 100644 --- a/public/scripts/controllers/settings-controller.js +++ b/public/scripts/controllers/settings-controller.js @@ -204,6 +204,12 @@ app.controller('settingsCtr', ['$scope', '$stateParams', '$filter', '$state', '$ $window.open(url, '_blank'); } + $scope.exportBookmark = function() { + toastr.warning('功能正在开发中,敬请期待......', '提示'); + return; + $window.open("api/download?fileName=lcq-20170304213023.html"); + } + function updateShowStyle(showStyle) { setTimeout(function() { if (showStyle) { diff --git a/public/scripts/services/bookmark-service.js b/public/scripts/services/bookmark-service.js index a9776c1..932b652 100644 --- a/public/scripts/services/bookmark-service.js +++ b/public/scripts/services/bookmark-service.js @@ -444,6 +444,19 @@ app.factory('bookmarkService', ['$http', '$q', function($http, $q) { }); return def.promise; }, + download: function(params) { + var def = $q.defer(); + $http.get('/api/download/', { + params: params + }) + .success(function(data) { + def.resolve(data); + }) + .error(function(data) { + def.reject('download error'); + }); + return def.promise; + }, }; return service; diff --git a/public/views/settings.html b/public/views/settings.html index 6dacb5b..55d9049 100644 --- a/public/views/settings.html +++ b/public/views/settings.html @@ -6,7 +6,7 @@ 我的信息 - 上传书签 + 上传或导出书签 网站说明 @@ -44,12 +44,6 @@ -
@@ -118,9 +112,10 @@
+

上传浏览器书签到系统

点我上传
-

注意事项

+

注意事项

1、导入的方法是将浏览器里面收藏的网站导出HTML文件。然后将导出的HTML文件点击上面的Upload按钮上传到服务器。目前只测试过谷歌浏览器跟IE浏览器的书签导入。但是因为浏览器的标签是可以支持互相导入的,我觉得应该是没问题的。如果不成功,可以先将其他浏览器的书签导入谷歌浏览器再导出。

2、谷歌浏览器书签导出文件方法:chrome浏览器书签导出

@@ -129,6 +124,8 @@

4、导入的文件不能超过10M

5、如果重复导入,新的会覆盖旧的信息。

+

导出为浏览器书签

+

为什么要做个网络书签

@@ -201,10 +198,6 @@
- -
{{ updateLog.date }}
    diff --git a/routes/api.js b/routes/api.js index b55a1bf..ecc7efb 100644 --- a/routes/api.js +++ b/routes/api.js @@ -10,6 +10,7 @@ var webshot = require('webshot'); var fs = require('fs'); var request = require('request'); var cheerio = require('cheerio'); +const path = require('path'); var storage = multer.diskStorage({ destination: function(req, file, cb) { @@ -755,13 +756,13 @@ api.post('/uploadBookmarkFile', upload.single('bookmark'), function(req, res) { var tags = []; item.tags.forEach((tag) => { - allTags.forEach((at) => { - if (at.name == tag) { - tags.push(at.id); - } + allTags.forEach((at) => { + if (at.name == tag) { + tags.push(at.id); + } + }) }) - }) - // 插入书签 + // 插入书签 db.getBookmarkbyUrl(userId, bookmark.url) .then((bookmarkId) => { // 如果这个url的书签存在了,那么直接返回书签,否则返回插入的书签 @@ -1443,6 +1444,20 @@ api.post('/updateNote', function(req, res) { }); // oops! }) +// 实现文件下载 +api.get('/download', function(req, res) { + var fileName = req.query.fileName; + var filePath = path.join(path.resolve(__dirname, '..'), 'uploads', fileName); + console.log('download fileName = ', fileName, ', download filePath = ' + filePath); + res.download(filePath, function(err) { + if (err) { + console.log(err); + } else { + console.log('download filePath[ ' + filePath + ' ]success!'); + } + }); +}); + function md5(str) { return crypto.createHash('md5').update(str).digest('hex'); };