Open lisyoen opened 1 year ago
npm install express npm install body-parser npm install sqlite3
const express = require('express'); const sqlite3 = require('sqlite3').verbose(); const fs = require('fs');
const app = express(); const port = 3000;
// Create a new database connection const db = new sqlite3.Database('qrScanner.db');
// Create a table for files if it does not exist db.run('CREATE TABLE IF NOT EXISTS files (id INTEGER PRIMARY KEY AUTOINCREMENT, postdtime DATETIME DEFAULT CURRENT_TIMESTAMP, filename TEXT UNIQUE, filesize INTEGER, url TEXT)');
// Create a route to handle POST requests app.post('/post', (req, res) => { // Get the filename, filesize, offset, codesize and content from the request query and body const { filename, filesize, offset, codesize } = req.query; const content = req.body;
// Print the parameters to the console
console.log(filename: ${filename}, filesize: ${filesize}, offset: ${offset}, codesize: ${codesize}, content: ${content}
);
// Insert the file into the database
db.run('INSERT INTO files (filename, filesize, url) VALUES (?, ?, ?)', [filename, filesize, offset], function(err) {
if (err) {
// If the filename already exists, update the filesize and url instead
db.run('UPDATE files SET filesize = ?, url = ? WHERE filename = ?', [filesize, offset, filename], function(err) {
if (err) {
console.log(err);
res.status(500).send('Internal Server Error');
return;
}
// Save the content to a file with the generated ID as the filename
const fileId = this.lastID;
fs.writeFile(${fileId}.txt
, content, (err) => {
if (err) {
console.log(err);
res.status(500).send('Internal Server Error');
return;
}
res.send('File saved successfully');
});
});
} else {
// Save the content to a file with the generated ID as the filename
const fileId = this.lastID;
fs.writeFile(${fileId}.txt
, content, (err) => {
if (err) {
console.log(err);
res.status(500).send('Internal Server Error');
return;
}
res.send('File saved successfully');
});
}
});
});
// Start the server
app.listen(port, () => {
console.log(Server listening on port ${port}
);
});
node.js 로 아래 REST API 작성해줘. DB 종류 SQLite 데이터베이스는 qrScanner 테이블명은 files 필드는
id (file ID, 자동증가) postdtime (file 등록 일시) filename (파일명, key) filesize (파일크기) url (저장 주소)
API method 는 POST url 은 /post 포트는 3000 입력값은 query param 에 filename (파일명, key) filesize (파일크기) offset (저장위치) codesize (저장크기) body 에 content (저장내용)
API 가 호출되면 파라미터를 콘솔에 출력해줘. files 테이블에 filename, filesize 를 저장하고 생성된 id 로 로컬폴더에 파일을 만들어서 offset 위치에 content 를 저장해줘.
설명은 필요 없고 전체 소스코드만 한 번에.
설치할 모듈이 있으면 설치 명령어도 알려줘.