2017-09-28 15 views
2

ファイルシステムから取得ファイルを読み取るのに次のコードを使用します コードはBuilding a File Uploader with NodeJsというブログ投稿からのものです。フォームアップロードファイルからファイルコンテンツを読み込みます

プロジェクトを実行したときにUIなどが表示されました。

私は私のプロジェクトで uploadsフォルダを持っていないので、私は次のコードを使用することはできません

form.uploadDir

app.post('/upload', function(req, res){ 

    // create an incoming form object 
    var form = new formidable.IncomingForm(); 

    // specify that we want to allow the user to upload multiple files in a single request 
    form.multiples = true; 

    // store all uploads in the /uploads directory - cannot use it 
    //form.uploadDir = path.join(__dirname, '/uploads'); 

    // every time a file has been uploaded successfully, 
    // rename it to it's original name 
    form.on('file', function(field, file) { 
     fs.rename(file.path, path.join(form.uploadDir, file.name)); 
    }); 

    // log any errors that occur 
    form.on('error', function(err) { 
     console.log('An error has occurred: \n' + err); 
    }); 

    // once all the files have been uploaded, send a response to the client 
    form.on('end', function() { 
     res.end('success'); 
    }); 
    // parse the incoming request containing the form data 
    form.parse(req); 

}); 

私の質問は、私は、コード とUIからファイルを取得する方法です上記?私は私のファイルを選択すると、フォームからファイルの内容を取得する必要があります。

アプリケーションがクラウドにdeployedであると私はlocalhostを使用する場合、私は次のコード(作品)を使用

const readStream = fs.createReadStream("./file.html"); 

...

const writeStream = sftp.createWriteStream("/index.html"); 

...

readStream.pipe(writeStream); 

Whi chはファイルシステムから正しいパスでファイルを作成し、別のファイル(ここではindex.htmlなど)で上書きします。

+0

'form.on( 'file' ... ')のコールバックでファイルが第2引数ではありません – adeneo

+0

@adeneo - これは私が思ったものですが、E2Eは動作していません...クラウドには非常に難しいのでデバッグするのは難しいです...)コンソールにアップロードされたファイル(form.on( 'file' ... ')からログを出力する簡単な方法があります...)私がフォームで選択したファイルの内容を見ることができるのは、クラウドで読み込まれたためです...したがって、少し難解です... –

+0

クラウドはありません。 – adeneo

答えて

0

@aedneoはユーザーがファイルを選択すると、アップロードフォルダにファイルが作成されたので、名前を変更して書き込みストリームメソッドの正しいパスを指定するだけで済みました。

関連する問題