type=file
oneと other の2 つの入力フィールドを持つフォームがありますtype=text
。
私はしたいと思います:
type=file
PHPを使用してアップロードするフィールドを持つファイルを選択します- アップロードされているファイルのファイル名を取得します
- をフィールドに挿入し
upload dir/file_name
ますtype=text
ファイルは正常にアップロードされます。問題はfile name
、使用しているブラウザによって異なります。
- Firefoxは正常に動作し、次のようになります。
somepath/file_name.ext
- IE(10)は完全なローカル ファイル パスを取得します。
somepath/C:\Users\User\Desktop\file_name.ext
- Chromeがかわいくなって戻ってきます。
somepath/C:\fakepath\file_name.ext
どうすればこれを解決できますか? Firefoxのようにだけが必要です。file_name.ext
言うまでもなく、ファイルが選択され、フォームが送信される前に、ファイル名を検出し、適切なテキスト フィールドを変更する必要があります。
HTML 部分:
<form enctype="multipart/form-data" action="" method="post">
<input name="data_up" id="data_up" type="file" /><br>
<input name="data" id="data" type="text" value="<?php if(isset($_POST['submit'])) { echo $_POST['data']; } ?>" />
<button name="submit" type="submit">Submit</button>
</form>
PHP の部分 (簡略化、セキュリティの追加が必要):
if (isset($_POST['submit'])) {
if ($_FILES["data_up"]["error"] == 0) {
move_uploaded_file($_FILES["data_up"]["tmp_name"], "somepath/".$_FILES["data_up"]["name"]);
}
}
JS の部分:
<script type="text/javascript">
$(function() {
$('#data_up').change(function () {
var fileName = $(this).val();
$('#data').val('somepath/'+fileName);
});
});
</script>