2011-12-27 5 views
3

ファイルフォームのコンテンツをHTMLフォームにするにはどうすればよいですか?ここに私が働いているものの例があります。 C」のようにすべての、それはそれをしない出力何か:\フェイクパス\ nameoffileフォームからファイルコンテンツを取得するにはどうすればよいですか?

<html> 
<head> 

<script type="text/javascript"> 
    function doSomething(){ 
     var fileContents = document.getElementById('idexample').value; 
     document.getElementById('outputDiv').innerHTML = fileContents; 
    } 
</script> 

</head> 
<body > 

<form name = "form_input" enctype="multipart/form-data"> 

<input type="file" name="whocares" id="idexample" /> 
<button type="button" onclick="doSomething()">Enter</button> 

</form> 

<div id="outputDiv"></div> 

</body> 
</html> 

EDIT:解決策がこのように実装することは困難である私は何を達成しようとしていることのpythonにファイルを送信しているようだ 私のウェブサーバ上のスクリプトが。これは、提案は歓迎されているので、この種のものをしようと私の初めてです。私は私のcgiフォルダ内のPythonスクリプトを入れてのようなものを使用して、それに値を渡すことができ想定...

/cgi/pythonscript.py?FILE_OBJECT=fileobjecthere&OTHER_VARIABLES=whatever 

これは、FileReaderを使用してjavacriptを直接開くのではなく、Webサーバーにファイルコンテンツを送信するためのより良いソリューションですか?

+0

試してみてください:// DEVを.w3.org/2006/webapi/FileAPI /)(それをサポートするブラウザで)。 – bfavaretto

+0

ああ、私は私が投稿する前にこれを少しgoogledしたいと思います。どうやらこれはjavascriptでは不可能です。それはActiveXで(または私が読んだ)IEを使用して行うことができるようです。私は別の解決策が必要なように見えます。 – b10hazard

答えて

2

をGETです。

あなたは* * [HTML5ファイルAPI](httpであることを行うことができるかもしれません。このworking example

function doSomething() 
{ 
    var file = document.getElementById('idexample'); 

    if(file.files.length) 
    { 
     var reader = new FileReader(); 

     reader.onload = function(e) 
     { 
      document.getElementById('outputDiv').innerHTML = e.target.result; 
     }; 

     reader.readAsBinaryString(file.files[0]); 
    } 
} 

(ChromeとFirefoxの最新バージョンで動作)

+0

Firefoxでは動作しましたが、Chromeでは動作しませんでしたが、引き続き理由を把握しようとしています。あなたはFileReaderが新しいと述べました。これは古いブラウザではうまくいかないでしょうか? – b10hazard

+0

IEでエラーが発生しました.... 'files.length'がnullまたはオブジェクトではありません – b10hazard

+0

このAPIは全く新しいものです。 [MDN](https://developer.mozilla.org/en/DOM/FileReader#Browser_compatibility)によると、Chrome 7+、Firefox 3.6+、IE 10、Opera 11.10+で動作するはずです。 – copy

0

フォームにファイルの内容を取得することなく、サーバーにフォームを送信できます。

+0

Ah。他の解決策が必要なようです – b10hazard

+0

@ bitnuk3rそれはそうだと思われます^ _^ – Neal

+0

@downvoter注意して説明しますか?^_^ – Neal

0

はい。下記のように、入力の行を置き換え、そして、それは動作します:)

<input type="file" ACCEPT="text/html" name="whocares" id="idexample" /> 
+0

私はこれを試して、それは動作しませんでした。私はChromeを使用しています。私はIEを持っていません。このソリューションブラウザは特定ですか?私はすべてのブラウザで動作するものが必要です – b10hazard

+0

私はIEでも試してみましたが、うまくいきません。 – b10hazard

0

をニールが言ったように - これはサーバーにファイルを送信するためです。

既存のコードに関して言及する価値のあるもう1つのこと。あなたのフォームは、データを送信するためにPOSTを使用する必要があります。あなたはこの方法をdefindedしていないと、デフォルトではあなたが実際に新しいFileReaderオブジェクトでそれを行うことができ

<form name = "form_input" enctype="multipart/form-data" method="POST> 
関連する問題