我有一個數據庫,我希望用戶能夠使用CSV文件進行更新。我試圖使用Postgres COPY
函數來做到這一點,但沒有得到它的工作。通過AJAX將CSV上傳到Heroku - Node/Express
HTML:
<h2>Mass Update</h2>
<form enctype="multipart/form-data" id="mass">
<input type="file" id="file" name="upload"/><br/>
Replace <input type="checkbox" name="replace"/>
</form>
<button id="trigger-mass">Submit</button>
jQuery的
$('#trigger-mass').on('click', function(){
var fd = new FormData(document.getElementById('mass'));
$.ajax({
url: base + table,
processData:false,
data:fd,
type:'POST'
});
節點
index.js
app.use('/', express.static(__dirname + '/static'));
app.use(express.bodyParser({uploadDir:__dirname +'/static/tmp', keepExtensions:true}));
這似乎不是最好的做法,但它是在我的情況確定因爲我希望這些上傳是可用的可以下載。如果tmp
目錄位於static
目錄之外,我正在收到Error:ENOENT open"..."
。
routes.js
// Clear table and refill with data
app.post('/data/:table', auth, function(req, res) {
var oMsg = quickRes(res, req);
console.log('REQ DATA')
console.log(req.body);
console.log(req.files);
...// Here is where I would issue the COPY command through pg
});
不幸的是,我還沒有任何東西req.files
露面。我也試過直接上傳AJAX文件data:document.getElementById('file').files[0]
無濟於事。有什麼建議麼?
這是問題的一部分。當bodyParser試圖將文件存儲在'tmp'中時,我還得到了'Error:ENOENT open「...」'。我在'static'目錄下面加了'tmp'目錄,它工作正常。所以這也是我的文件系統的權限問題。非常感謝。 –
此外,[此答案](http://stackoverflow.com/a/8758614/1149459)可能會對其他人有所幫助。 –