質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

1回答

665閲覧

サーバーに送られてきたファイルをnode.jsを用いてコンソール上で解析する

mote

総合スコア128

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2018/09/17 06:04

編集2018/09/20 02:00

1つのjsファイルで、httpサーバーを立て、フォームから静的ファイルを送信して、サーバーのコンソール上で解析するようなシステムにしたいのですが、エラーが出てしまいうまく行きません

ネットで調べて試した事としては、jsonファイルがないからエラーが出ていると書いてあったので。
npm init でjsonファイルを作成したのですが、エラーのままでした。

完全に手詰まり状態になってしまったのでお力を貸してください。

js

1var http = require('http'); 2var formidable = require('formidable');//アップロードされたファイルを解析するモジュール 3var fs = require('fs'); 4 5http.createServer(function (req, res) { 6 if (req.url == '/fileupload') {//もしuploadされたら 7 var form = new formidable.IncomingForm();//インスタンス化 8 form.parse(req, function (err, fields, files) {//解析開始(filesにpathが入っている) 9 var oldpath = files.filetoupload.path; 10 var newpath = 'C:/Users/motegiyuuta/' + files.filetoupload.name; 11 fs.rename(oldpath, newpath, function (err) { 12 if (err) throw err; 13 res.write('File uploaded and moved!'); 14 res.end(); 15 }); 16 }); 17} else {//最初に画面 18 res.writeHead(200, {'Content-Type': 'text/html'}); 19 res.write('<form action="fileupload" method="post" enctype="multipart/form-data">'); 20 res.write('<input type="file" name="filetoupload"><br>'); 21 res.write('<input type="submit">'); 22 res.write('</form>'); 23 return res.end(); 24 } 25}).listen(8080); 26console.log("server start!") ; 27

エラーは、
Error: ENOENT: no such file or directory, rename '/var/folders/kd/7v0d2bd50kqbk18b88wbyvn00000gn/T/upload_
0feef12b8cd3fa37468cfcc4c2eb1b0d' -> 'C:/Users/motegiyuuta/スクリーン&#12471
;ョット 2018-09-15 21.35.32.png'
エラー無くサーバーはスタートされるのですが、
フォームにファイルを添付して送信を押すとサーバーコンソール上に上記のように記述されます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2018/09/17 06:25

ディレクトリやファイル名に スペースや2バイト文字を含んでいるようですが、それらをなくしたら状況は変わりますか?
mote

2018/09/20 01:42

変更してみましたが、エラーは無くなりません...
CHERRY

2018/09/20 01:55

` 'C:/Users/motegiyuuta /' ` の部分 `/` 前に 半角スペースがあるのですが、これを消してもダメでしたか?
mote

2018/09/20 01:59

'C:/Users/motegiyuuta/'のように記述しましたが、治りません
mote

2018/09/20 09:08

そもそも一時的にファイルを解析して新たなファイルをparseの第三引数filesにpassが入っているところが出来ていないのでしょうか? renameでnewpathにoldpathを移動する以前の問題かと思っています
guest

回答1

0

ベストアンサー

エラーメッセージから察するに、このプログラムはlinux上で動いていますよね?
それなのにどういうわけか、renameでnewpathにWindowsのパスを指定していて、

/var/folders/kd/~/のファイル を C:\Users\hogehoge に移動しようとしているので
できないだけです。

node

1 //var newpath = 'C:/Users/motegiyuuta/' + files.filetoupload.name; 2 var newpath = './' + files.filetoupload.name; 3

とすれば、ソースが存在するディレクトリにアップロードされたファイルが
移動することを動作確認できました。

投稿2018/09/28 09:38

taka-saan

総合スコア665

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問