2011-09-10 7 views
0

MySQLのテーブルにデータを入力するだけのHTMLとPHPフォームを作成しました。
私はファイルアップロードフィールドを持っていますが、ファイルはアップロードしていません。私はそれがサーバーに何かをアップロードすることを望んでいない、私はそれが選択されたファイルの場所をつかんで、データベースに入力することです。

Internet Explorerでは完全に正常に動作しますが、他のブラウザでは動作しません。それは、セキュリティ上の問題が原因です。

私の入力コード:ファイルの完全な場所を取得するための 'アップロード'フォーム?

<input type="file" id="filename" name="filename" /> 

とフォームが送信されたときに、もちろん、いくつかのPHPコードは、データベースにデータを挿入することによって実行されます。そのフィールドの値を別のフィールドにコピーするためにJavaScriptを試しましたが、動作しないセキュリティの問題が原因です。

JavaScriptでこれを行う方法を知っている人はいますか?またはフラッシュ?正直言って、これらに似たものがあれば、IE以外のブラウザーでも動作するものです。

ありがとうございました。

EDIT -

はここに私のコードです:それはデータベースに選択し、入力、そのファイルの場所をつかむためにため

<?php 
if (isset($_POST['submit'])) { 
    $name = addslashes(htmlentities($_POST['name'])); 
    $filename = addslashes(htmlentities($_POST['filename'])); 

    if (@mysql_query("INSERT INTO movies SET 
         name='$name', 
         doc_filename='$filename'")) { 
     echo '<p>Movie added.</p><p><a href=movies.php">Manage movies</a>.</p>'; 
    } else { 
     echo '<strong>Error:</strong> '.mysql_error().''; 
    } 
} else { 
?> 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="newspost" enctype="multipart/form-data"> 
    <div class="form-row"> 
     <label for="fm_title">Movie file path: </label><br /> 
     <input type="file" id="filename" name="filename" /> 
    </div><br /> 
    <div class="form-row"> 
     <label for="fm_title">Movie name: </label><br /> 
     <input type="text" class="input-width" name="name" value="<?php if (!empty($_POST['name'])) { echo $_POST['name']; } ?>" /> 
    </div> 
    <div class="form-row"> 
     <input type="submit" name="submit" value="Submit" /> 
    </div> 
</form> 
<?php 
} 
?> 
+0

として

<input type="text" class="input-width" name="name" value="<?php if (!empty($_POST['name'])) { echo $_POST['name']; } ?>" /> 

を与えることを想定方法をIEにはJavaScriptがありませんIE – ajreal

+0

のために働くJavaScriptを含めてください。 IEはうまくいくようです。私は "ファイル名"フィールドの完全な値を入力し、完全な位置をそれ自身のファイルに挿入します。 –

+0

その後、HTMLフォームとPHPコードを表示してください! – ajreal

答えて

1

私が望むすべてがあります。

これは、セキュリティ上の理由から、HTMLを使用できなくなりました。ファイル入力のDOM要素では、選択したファイルの場所にアクセスできなくなりました。ほとんどのブラウザはC:\Fakepath\を代わりに使用します。

この情報は、FlashまたはJavaベースのアップローダを使用して取得することができます(編集:たとえばAS3マニュアルのthis pageを参照してください)SWFUpload's APIは一見価値があります。しかし、これには独自のFlashまたはJavaソリューションを構築する必要があります。

+0

情報ありがとう!私はそれに関係していたと思っていました。私はそれらのリンクを見てみましょう!ありがとう:) –

0

フォームのデータをどのように投稿していますか?私はフォームの投稿の方法を見ることができません。いいえ送信ボタンまたはjavascriptのonclickまたはonchangeイベント?そしてまた、あなたがこの行は出力にそのすでにラインの他の部分で

if (isset($_POST['submit']))

+0

その行は、フォームが提出された時点でのみ出力します。私はエラーチェックをコーディングしましたが、あまりにも多くのスペースを占めるので、ここでコードにコピーするのは気にしませんでした。申し訳ありません、提出ボタンについて、私はそれをコピーすることを忘れました。それは今そこにある。フォームは正常に提出され、私は助けが必要なのはファイルパスです。 –

関連する問題