Ajax通信を利用したファイルアップロードができない
https://symfoware.blog.fc2.com/?no=2565
こちらの記事を参考にファイルアップロードの仕組みを作りました。
ローカル環境では無事にプロジェクトファイル直下にファイルが作成されたのですが、herokuにデプロイした後に試してみたところプロジェクトファイル直下に書き込まれませんでした。何故でしょうか。
エラーが出ているわけではなく、正常に動いています。
何かわかる方いましたらご教授お願いいたします。
app.js(一部抜粋)
1app.set('view engine', 'ejs'); 2 3app.use(express.raw({limit: '15mb'})); 4 5app.get('/connect', async (req, res) => { 6 res.render('upload.ejs'); 7}); 8 9app.post('/upload', async (req, res) => { 10 connection.query( 11 'SELECT id FROM tweets ORDER by id DESC limit 1;', 12 (error, results) => { 13 var logNo = results[0].id; 14 console.log(logNo); 15 fs.writeFileSync(logNo+'.kml', req.body); 16 res.send('ok'); 17 }); 18});
upload.ejs
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"> 6 <title>ajax post</title> 7 <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script> 8</head> 9<body> 10 <div> 11 <label>kmlファイル選択:</label> 12 <input accept="file*" id="image" type="file"> 13 </div> 14 <div> 15 <button id="upload">アップロード</button> 16 </div> 17<script> 18$(() => { 19 const upload = (binaryData) => { 20 $.ajax({ 21 url: 'upload', 22 type: 'POST', 23 data: binaryData, 24 processData: false, 25 contentType: 'application/octet-stream' 26 }).done((data) => { 27 console.log('成功'); 28 }).fail(() => { 29 console.log('失敗'); 30 }); 31 }; 32 $('#upload').on('click', () => { 33 if (!$('#image').prop('files').length) { 34 console.log('画像未選択'); 35 return false; 36 } 37 38 const file = $('#image').prop('files').item(0); 39 40 console.log(file.name); 41 42 console.log(file.type); 43 44 console.log(file.size); 45 46 const reader = new FileReader(); 47 reader.onloadend = () => { 48 49 upload(reader.result); 50 }; 51 reader.readAsArrayBuffer(file); 52 }); 53}); 54</script> 55</body> 56</html>
回答2件
あなたの回答
tips
プレビュー