21

HTMLファイルが配置されているローカルにファイルが存在するかどうかを確認したいと思います。JavaScriptである必要があります。JavaScriptが無効になることはありません。jQueryは良くありませんが、できます。

ちなみに、私はMac用のチタンアプリを作っているので、「パッケージの内容を表示」をクリックする人からファイルを保護する方法を探しています。

4

9 に答える 9

14

あなたの質問はあいまいです。そのため、実際に達成しようとしていることに応じて、複数の回答が考えられます。

Titanium を使用したデスクトップ アプリケーションを開発している場合は、FileSystem モジュールの getFile を使用してファイル オブジェクトを取得し、exists メソッドを使用して存在するかどうかを確認できます。

以下は、Appcelerator の Web サイトから抜粋した例です。

var homeDir = Titanium.Filesystem.getUserDirectory();
var mySampleFile = Titanium.Filesystem.getFile(homeDir, 'sample.txt');

if (mySampleFile.exists()) {
    alert('A file called sample.txt already exists in your home directory.');
    ...
}

getFile メソッドのリファレンス ドキュメントを確認してください

そして、exists メソッドのリファレンス ドキュメント

彼が通常の Web 開発状況について尋ねていると思った人のために、私が答えたであろう 2 つの答えは次のとおりです。

1)サーバー側のファイルが存在するかどうかを確認したい。この場合、ajax リクエストを使用してファイルを取得し、受信した回答に反応することができます。ただし、Web サーバーによって公開されているファイルのみを確認できることに注意してください。より良い方法は、ファイル名を指定してチェックを実行するサーバー側スクリプト (php など) を作成し、そのスクリプトを ajax 経由で呼び出すことです。また、十分に注意しないと、アプリケーション/サーバーにセキュリティ ホールが非常に簡単に作成される可能性があることに注意してください。

2) クライアント側のファイルが存在するかどうかを確認したい。この場合、他の人が指摘したように、セキュリティ上の理由から許可されていません (ただし、IE は過去に ActiveX と Scripting.FileSystemObject クラスを介してこれを許可していました)。ファイル)なので、これは忘れてください。

于 2011-02-25T09:33:45.537 に答える
11

「Kranu」は、「ファイルシステムとの唯一の対話は、js ファイルのロードのみです。. .'、これは、エラー チェックを使用してそうすることで、少なくともファイルが存在しないかどうかを教えてくれることを示唆しています。

ローカルマシンから、ファイル を外部スクリプトとしてロードしてエラーをチェックすることで、ファイルが存在しないかどうかをチェックできます。例えば:

<span>File exists? </span>
<SCRIPT>
    function get_error(x){
        document.getElementsByTagName('span')[0].innerHTML+=x+" does not exist.";
    }
    url="   (put your path/file name in here)    ";
    url+="?"+new Date().getTime()+Math.floor(Math.random()*1000000);
    var el=document.createElement('script');
    el.id="123";
    el.onerror=function(){if(el.onerror)get_error(this.id)}
    el.src=url;
    document.body.appendChild(el);
</SCRIPT>

いくつかのメモ...

  • ブラウザーのキャッシュが古い結果を提供しないように、ファイル名にランダムなデータ (url+="?"+new Date など) を追加します。
  • これをループで使用している場合は、一意の要素 ID (el.id=) を設定して、get_error 関数が正しい項目を参照できるようにします。
  • onerror (el.onerror=function) 行の設定は、get_error 関数を呼び出して el.id を渡す必要があるため、少し複雑です。関数への通常の参照 (例: el.onerror=get_error) が設定されている場合、その場合、el.id パラメータを渡すことができませんでした。
  • これは、ファイルが存在しないかどうかのみをチェックすることに注意してください。
于 2011-04-27T07:33:18.413 に答える
4

Javascript はファイルシステムにアクセスできず、存在を確認できません。ファイルシステムとの唯一のやり取りは、js ファイルと画像 (png/gif/etc) の読み込みです。

Javascript はこのタスクではありません

于 2011-02-25T08:45:07.193 に答える
3

javascriptを使用してファイルが存在するかどうかを確認したい場合は、いいえ、私が知る限り、セキュリティ上の理由により、javascriptはファイルシステムにアクセスできません..

于 2011-02-25T08:43:12.990 に答える
3

幸いなことに、(セキュリティ上の理由から) 標準の JS を使用してクライアント側のファイルシステムにアクセスすることはできません。ただし、独自のソリューションがいくつか存在します (Microsoft の IE 専用 ActiveX コンポーネントなど)。

于 2011-02-25T08:47:40.347 に答える
2

別の方法: 特権アクション オブジェクトを使用してこの存在チェックを実装する「隠し」アプレット要素を使用し、次の方法で run メソッドをオーバーライドすることができます。

File file = new File(yourPath);
return file.exists();
于 2013-03-15T11:13:28.553 に答える