2017-07-11 14 views
0

ウェブサイトのディレクトリにファイルを追加することはできますか?JavaScriptでWebサイトのディレクトリにファイルを追加するにはどうすればよいですか?

つまり、ディレクトリがあるとします(例:"myWeb"と呼びます)。index.htmlmain.jsです。 main.js

、私はボタンをクリックしたときmyWebに新しいページを追加したい、のは(今のところ、私はもう一度クリックしたときにファイルを上書きする心配はありません)secondindex.htmlをしましょう。

これは可能ですか?そうでない場合は、他のテクニックがありますか、これは広すぎますか?

+4

JavaScriptだけではなく、いいえ。何らかのサーバサイドコンポーネントが必要になります。これは通常、実際の個別ファイルではなく、データベースで行われます。たとえば、StackOverflowを取ると、JSを使ってサーバに '.html'ファイルを置くことができない場合、すべての質問に対して別々の' .html'ファイルが存在することは愚かです。代わりに、一連のスクリプトとデータベースがあります。 – ceejayoz

+0

なぜそうではないのでしょうか?洞察のためにこのソリューションに従ってください: https://stackoverflow.com/questions/8390855/how-to-instantiate-a-file-object-in-javascript –

+0

@tolulopeowolabi Webサーバー上にファイルを作成しないでください。 – ceejayoz

答えて

0

セキュリティ上の理由から、クライアント側は互いに接続されていないため、サーバー側に直接書き込むことはできません。ファイルをサーバーに書きたい場合は、バックエンドサーバーと、そのような方法でファイルをやりとりするためのAPI /スクリプトが必要です。

Firebaseのようなデータベースやクラウドソリューションを使用するなど、ファイルの作成には関係しない他の方法もあります。ただし、サイトを基本的に保ち、静的ファイル(速度はその1つ)を作成し、データベースを別のものに設定して維持したくないという完全な正当な理由があります。

これは、例えばNode.jsの中fsモジュールを使用して行うことができます。

var fs = require('fs'); 

function generateHtml (req) { 
    return '<!DOCTYPE html><html><header><title>My Page</title></header><body><p>A test page</p></body></html>'; 
} 

var filename = '/path/to/secondindex.html'; 
var stream = fs.createWriteStream(filename); 

stream.once('open', function(fd) { 
    var html = generateHtml(); 

    stream.write(html); 

    stream.end(); 
}); 

上記のJavascriptファイルサーバー側にあるであろうと、あなたは、サーバーのいくつかの種類を持っているでしょう要求(トークンなどを使用して保護されていることが望ましい)をチェックし、必要なファイルを作成します。

特に、fsモジュールは、さまざまな方法でファイルを作成できるという点で柔軟です。上記はストリームを使用しており、大規模なファイルを処理する場合には最適です。

関連する問題