我想在我的服務器中添加一個功能:1)在瀏覽器中輸入localhost:3000/#/files
將創建一個臨時文本文件,該文件可以打開通過localhost:3000/#/{FILE_ID}.txt
; 2)關閉瀏覽器將刪除臨時文件。在正確的地方生成臨時文件並在會話結束後刪除它們
爲此,我嘗試使用node-tmp,並寫了一些代碼:
在前端:
app.config(['$stateProvider', function ($stateProvider) {
$stateProvider
.state('files', {
url: '/files',
template: "Hello World",
controller: 'FilesCtrl'
})
}]);
app.controller('FilesCtrl', ['$http', function ($http) {
$http.post('/createFiles', null, null);
}])
在後端:
router.post('/createFiles', function (req, res, next) {
var tmp = require('tmp');
var fs = require('fs');
tmp.file({ prefix: 'projectA-', postfix: '.txt' }, function (err, path, fd) {
if (err) throw err;
console.log("File: ", path);
console.log("Filedescriptor: ", fd);
fs.writeFileSync(path, "Hello world!")
});
});
作爲結果,在瀏覽器中輸入localhost:3000/#/files
確實會創建一個文件/var/folders/fn/0rmvqqbs4k76lg5g6b7kll100000gn/T/projectA-40926BSynm5PKdMmW.txt
,但關閉瀏覽器選項卡並不會刪除該文件。
我使用正確的庫嗎?如果是這樣,有沒有人知道我可以1)讓tmp文件被放置在localhost:3000/#/{FILE_ID}.txt
; 2)在會議結束後系統地刪除它?
對不起,我想我做到OP中的錯誤:打開'localhost:3000 /#/ {FILE_ID} .txt'不應該那麼重要;我只想將這些文件放在子文件夾「the_folder_of_my_site \ tmp_txt \」中,以便可以從外部打開它們。無論如何,請忽略此... – SoftTimur
那麼'node-tmp'是否使用了正確的庫?是否有任何現有的庫來管理文件的生成和斷開後的刪除? – SoftTimur
@SoftTimur - 通過查看文檔'node-temp',我可以看出最好的結果是爲創建唯一命名的臨時文件提供了非常好的功能,但是當給定的客戶端不再連接時,它不具備清理它們的功能。清理方法似乎與您的node.js進程退出時相關。您可以參考我的答案,瞭解如何在給定客戶端斷開連接時添加清理。 – jfriend00