2009-05-03 11 views
19

記事の全体: 私の会社のプロジェクトでは、サードパーティのソフトウェアで生成されたレポートをアップロードする必要があります。このソフトウェアによって生成されるすべてのレポートは、常に同じディレクトリに配置されます。 サプライヤーのウェブサイトから特定のディレクトリに請求書をダウンロード/保存すると、アップロードする正しいディレクトリを見つけることが難しくなります。それぞれの場所での<input type = "file">の作業ディレクトリを制御しますか?

コンピュータは、Windows Server 2003を実行し、現在私たちは、デフォルトで正しいディレクトリを指すように、ファイルの入力を設定することで、使いやすさ、およびコンプライアンスを増加したいと思いIE6

持っています。

私は当初、ファイルを入力値に直接設定できるようにしたいと考えていましたが、これはほとんどのブラウザで無効になっている理由があります。 javascriptを使用するか、HTMLブラウザーボタンを押したときに開くディレクトリをコントロールすることは可能ですか?

もしそうでない場合、それを達成するための他の提案はありますか?ブラウザに必要な作業ディレクトリを使用させるためのショートカットを正常に設定するための簡単な方法です。 (IEはショートカットの 'start in'パラメータを無視しているようです)

答えて

12

セキュリティ上の理由から、JavaScriptを使用してファイル入力の内容を制御することはできません。それ以外の場合は、ファイル入力フィールドを含む非表示のフォームを作成し、パスに設定し、JavaScriptを使用してフォームを送信して、ユーザーに知らなくてもファイルをサーバーにアップロードできます。

残念ながら、ファイルセレクタの既定のパスを設定する方法はわかりません。ある場合は、ブラウザ固有のものであると確信しており、HTMLまたはJavaScriptではなく、クライアント側でいくつかのオプションを設定することによってのみ使用できます。

1

IEは、ファイルのアップロード用に最後に選択したフォルダを使用します。あなたがクライアントコンピュータを支配しているなら、私のヒントです。ファイルが存在するフォルダにドライブ文字を割り当てます。これは、autoloadを呼び出すsubstに置かれたcmd-fileを使って簡単に行うことができます。非常に短いので、非常に明確で簡単な指示を書くことが可能でなければならないので、ユーザーに手動でドライブレターを入力するよう指示します。がんばろう。

0

入力ファイルの値を設定することはできません。これはセキュリティの問題です。

アクティブなコントロールを使用することはできますが、日付はかなり古いです。多くの先進的なファイルアップロードActiveXコントロールがあります。私はあなたがかなり安く買うことができると確信しています。

ダウンロードディレクトリの

レジストリ設定は、トリックを行う可能性があります :(でも、そのアップロードが) 、あなたはそれを彼らはIE

HKCU\Software\Microsoft\Internet Explorer\DownloadDirectory 
3

た迅速なGoogle検索を開くたびに設定する方法を理解する必要がありますJUploadに - オープンソースは、すべてのニーズを満たすように思われるJavaアプレットに署名した:http://jupload.sourceforge.net/

デモサイト:http://jupload.sourceforge.net/advanced_js_demo.html

私は他の多くのようにJavaが出アプレットがあると確信していますそれはおそらく自分自身をロールバックすることは難しくありません。

私が考えることができる唯一の他の選択肢は、デスクトップアップロードアプリケーションです。

+0

Javaは少し侵襲だと思いますか? –

+1

フラッシュアップロードコントロールは、それをカットしません、彼らは基本的なHTMLと同じセキュリティルールに従います - ファイルの名前は、私が選択した多くのActiveXコントロールとフラッシュアップロードコントロールがあります。拡張機能のみ。 あなたはJavaのフットプリントについては正しいですが、私はちょうどActiveXコントロールやレジストリのハックを使用することを躊躇しています。 P – brianpeiris

0

これは機能します。 ここでは、ユーザーがクライアントのローカルイメージパスで入力イメージファイルを使用していることを確認する必要がありました。 UrlExistsは、ファイルが既知のパス+ファイル名にロードできるかどうかを単純にチェックします。 また、ブラウザよりも入力の見栄えを良くする必要がありました。 ここでのトリックは、入力をマスクするためにここに示したより多くの作業でキャンバスを配置していました。入力不透明度を0に設定すると、トリックが表示されるように0.5に設定されます。

<body> 
    <canvas id="FancyCanvasButton" tabindex="8" width="240" height="18" style="position: absolute; left: 100px; top: 120px; border: 1px solid rgb(0, 0, 0); z-index: 1;"></canvas> 
    <input type="file" accept="image/*" onchange="loadFile(event)" style="opacity:0.5;position: absolute; left: 100px; top: 120px; z-index: 2; " > 
    <img id="output"/> 
<script> 
var loadFile = function(event) { 
    var output = document.getElementById('output'); 
    var fName= "Images/" + event.target.files[0].name; //None path with users selected file name 
    if(UrlExists(fName)){ 
    output.src=fName;   //Do something like show image 
    }else{ 
    alert("File not present"); // Do something to show file not in this path 
    } 
}; 

function UrlExists(url) { 
    var http = new XMLHttpRequest(); 
    http.open('HEAD', url, false); 
    http.send(); 
    if (http.status != 404){ 
     return true; 
    }else{ 
     return false; 
    } 
    } 

    </script> 
+0

var fNameは、ユーザーのファイル名で知られているパスを持つ必要があります。私のコメントには「知られていません」とは言われていませんが、私は、 –

+0

質問には何もしないので、うまくいかない... – IamGuest

1

簡単に言えば、そのようなことはできません。ご覧のとおり、すべての/ほとんどの回答がこの声明に同意していますが、その質問を誤解していないものもあります。申し訳ありませんが、あなたがやろうとしていることは、ほとんどのブラウザでセキュリティリスクとみなされます。

関連する問題