开始着手开发浏览器书签导出

This commit is contained in:
luchenqun 2017-06-25 00:02:52 +08:00
parent cdb005306b
commit d1ecfe57e9
5 changed files with 46 additions and 18 deletions

View File

@ -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"

View File

@ -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) {

View File

@ -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;

View File

@ -6,7 +6,7 @@
</a>
<a class="item" ng-class="{active:form[1]}" ng-click="changeForm(1)">我的信息
</a>
<a class="item" ng-class="{active:form[2]}" ng-click="changeForm(2)">上传书签
<a class="item" ng-class="{active:form[2]}" ng-click="changeForm(2)">上传或导出书签
</a>
<a class="item" ng-class="{active:form[3]}" ng-click="changeForm(3)">网站说明
</a>
@ -44,12 +44,6 @@
<label>导航</label>
</div>
</div>
<!-- <div class="field" ng-click="updateDefaultShowStyle('costomTag')">
<div class="ui radio checkbox js-radio-default-costomTag">
<input type="radio" name="default-show-style">
<label>标签</label>
</div>
</div> -->
<div class="field" ng-click="updateDefaultShowStyle('table')">
<div class="ui radio checkbox js-radio-default-table">
<input type="radio" name="default-show-style">
@ -118,9 +112,10 @@
</tbody>
</table>
<form class="ui form" ng-show="form[2]">
<h2 class="ui dividing header">上传浏览器书签到系统</h2>
<div id="fileuploader" style="min-width:100px">点我上传</div>
<h2 class="ui dividing header">注意事项</h2>
<div class="ui container js-p-info">
<p>注意事项</p>
<p>1、导入的方法是将浏览器里面收藏的网站导出HTML文件。然后将导出的HTML文件点击上面的<code>Upload</code>按钮上传到服务器。目前只测试过谷歌浏览器跟IE浏览器的书签导入。但是因为浏览器的标签是可以支持互相导入的我觉得应该是没问题的。如果不成功可以先将其他浏览器的书签导入谷歌浏览器再导出。</p>
<p>2、谷歌浏览器书签导出文件方法<a href="http://jingyan.baidu.com/article/0bc808fc2d3b841bd485b9fb.html" target="_blank">chrome浏览器书签导出</a>
</p>
@ -129,6 +124,8 @@
<p>4、导入的文件不能超过10M</p>
<p>5、如果重复导入新的会覆盖旧的信息。</p>
</div>
<h2 class="ui dividing header">导出为浏览器书签</h2>
<button class="fluid ui button" ng-click="exportBookmark()">导出书签</button>
</form>
<div class="ui container js-p-info" ng-show="form[3]">
<h3 class="ui dividing header">为什么要做个网络书签</h3>
@ -201,10 +198,6 @@
</table>
</div>
<div class="ui container js-p-info" ng-show="form[5]">
<!-- <h3 class="ui dividing header">更新日志</h3> -->
<!-- <div class="ui active inverted dimmer" ng-class="{active:loadingLogs, disabled: !loadingLogs}">
<div class="ui text loader">正在从Github获取提交日志。。。</div>
</div> -->
<div class="ui message" ng-repeat="updateLog in updateLogs">
<div class="header">{{ updateLog.date }}</div>
<ul class="list" style="cursor: default;">

View File

@ -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');
};