JS 保存文件(屏蔽默認(rèn)打開)

問題描述:

打開一個鏈接不是提示下載文件而是直接用瀏覽器打開炭分。

實現(xiàn)效果:

彈出下載框,然后選擇本地存儲路徑進行保存乾忱。

實現(xiàn)瀏覽器下載而非打開文件

var e = document.createElement('a');
e.;
e.download = 'filename.md';
e.click();

與NodeJS相結(jié)合

實現(xiàn)流程:

  • 后端生成文件并將文件路徑返回給前端娱挨。 * 前端動態(tài)創(chuàng)建a元素, 使其href屬性指向文件路徑洋侨, 并添加download屬性。 * 模擬其點擊事件以實現(xiàn)下載倦蚪。

實例展示

前端

var params = {
  'title': this.post.title,
  'category': this.post.category,
  'content': this.post.content,
  'tags': this.post.tags
}
this.$axios.post('/save', params).then(function(response) {
  console.log(response);
  console.log(window.location.origin, response.data)
  var e = document.createElement('a');
  e.href = window.location.origin.replace('8080', '3333') + '/' + response.data;
  e.download = (params.title || 'NoTitle') + '.md';
  e.click();
}).catch(function(error) {
  // console.log(error);
  // that.error = error.toString()
  that.error = true;
  that.loading = false;
})

后端

【 app.js】

var save = require('./save');
app.use(express.static(path.join(__dirname, 'files')));
//保存到本地
app.post('/save', function(req, res) {
  var post = {
    'title': req.body.title,
    'content': req.body.content,
    'category': req.body.category,
    'tags': req.body.tags
  };
  save.save(post, function(fileName) {
    // 解決方案
    res.send(fileName)
      // 方案1:測試無效希坚,起碼 .md 無效
      // var stats = fs.statSync(filePath);
      // if (stats.isFile()) {
      //   res.set({
      //     'Content-Type': 'application/octet-stream',
      //     'Content-Disposition': 'attachment; filename=' + fileName,
      //     'Content-Length': stats.size
      //   });
      //   fs.createReadStream(filePath).pipe(res);
      // } else {
      //   res.end(404);
      // }
      // 方案2:測試無效,起碼 .md 無效
      // res.download(filePath, fileName, function(err) {
      //   if (err) {
      //     // Handle error, but keep in mind the response may be partially-sent
      //     // so check res.headersSent
      //   } else {
      //     // decrement a download credit, etc.
      //   }
      // });
  }, function() {
    res.end(404);
  });
});

【 save.js】

var fs = require('fs');
var save = {
    save: function(param, callback, callerr) {
      var title = param.title || '';
      var category = param.category || '';
      var tags = param.tags || '';
      var content = param.content || '';
      var filename = (title || 'NOTITLE') + '(' + Date.now() + ')' + '.md';
      var con = "---\r\ntitle: " + title + "\r\ncategory: " + category + "\r\ntags: " + tags + "\r\n---\r\n" + content;
      fs.writeFile('files/' + filename, con, (err) => {
        if (err) {
          callerr && callerr();
          throw err;
          return;
        }
        console.log('The file has been saved!');
        callback && callback(filename);
      });
    }
  }
  // var param={
  //  title:'',
  //  category:'',
  //  tags:'',
  //  content:''
  // }
  // save.save(param);
module.exports = save;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末陵且,一起剝皮案震驚了整個濱河市裁僧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌慕购,老刑警劉巖聊疲,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異沪悲,居然都是意外死亡售睹,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門可训,熙熙樓的掌柜王于貴愁眉苦臉地迎上來昌妹,“玉大人,你說我怎么就攤上這事握截》裳拢” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵谨胞,是天一觀的道長固歪。 經(jīng)常有香客問我,道長胯努,這世上最難降的妖魔是什么牢裳? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮叶沛,結(jié)果婚禮上蒲讯,老公的妹妹穿的比我還像新娘。我一直安慰自己灰署,他們只是感情好判帮,可當(dāng)我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著溉箕,像睡著了一般晦墙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上肴茄,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天晌畅,我揣著相機與錄音,去河邊找鬼寡痰。 笑死抗楔,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的氓癌。 我是一名探鬼主播谓谦,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼贪婉!你這毒婦竟也來了反粥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤疲迂,失蹤者是張志新(化名)和其女友劉穎才顿,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尤蒿,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡郑气,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了腰池。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尾组。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡忙芒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出讳侨,到底是詐尸還是另有隱情呵萨,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布跨跨,位于F島的核電站潮峦,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏勇婴。R本人自食惡果不足惜忱嘹,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望耕渴。 院中可真熱鬧拘悦,春花似錦、人聲如沸萨螺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽慰技。三九已至椭盏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吻商,已是汗流浹背掏颊。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留艾帐,地道東北人乌叶。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像柒爸,于是被迫代替她去往敵國和親准浴。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理捎稚,服務(wù)發(fā)現(xiàn)乐横,斷路器,智...
    卡卡羅2017閱讀 134,665評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,180評論 25 707
  • 進入公司之后今野,我已經(jīng)換了四位領(lǐng)導(dǎo)的葡公。而我的上任,應(yīng)該對于我來說職業(yè)生涯中的遇到的貴人条霜。但是轉(zhuǎn)到去年的這個時候催什,我還...
    sanwei閱讀 535評論 0 2
  • 公司:寧波大發(fā)化纖有限公司 姓名:馮玉停 期數(shù):六項精進224期感謝二組學(xué)員,234期感謝三組志工宰睡,260期感謝一...
    塵埃wyzh閱讀 92評論 0 0
  • 有三把如意蒲凶,一把來自清代潮州城的富貴人家气筋,木質(zhì),雕連枝牡丹形豹爹,身被金帛裆悄,雍容華貴,名金漆木雕如意臂聋;一把來自明代文人...
    天_馬_行_空閱讀 695評論 1 4