C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

バックスラッシュ入力できず¥マークが入力されてしまいます /Tom2000 (22/09/02(Fri) 13:49) #100516
Re[1]: バックスラッシュ入力できず¥マークが入力されてしま.. /WebSurfer (22/09/02(Fri) 14:25) #100517
Re[1]: バックスラッシュ入力できず¥マークが入力されてしま.. /WebSurfer (22/09/02(Fri) 14:31) #100518
│└ Re[2]: バックスラッシュ入力できず¥マークが入力されてしま.. /Tom2000 (22/09/02(Fri) 15:42) #100520
Re[1]: バックスラッシュ入力できず¥マークが入力されてしま.. /WebSurfer (22/09/02(Fri) 15:34) #100519
  └ Re[2]: バックスラッシュ入力できず¥マークが入力されてしま.. /Tom2000 (22/09/02(Fri) 15:46) #100521
    ├ Re[3]: バックスラッシュ入力できず¥マークが入力されてしま.. /伝説のカレー (22/09/02(Fri) 16:07) #100522
    │└ Re[4]: バックスラッシュ入力できず¥マークが入力されてしま.. /伝説のカレー (22/09/02(Fri) 16:13) #100523
    │  └ Re[5]: バックスラッシュ入力できず¥マークが入力されてしま.. /Tom2000 (22/09/02(Fri) 16:35) #100524
    │    ├ Re[6]: バックスラッシュ入力できず¥マークが入力されてしま.. /魔界の仮面弁士 (22/09/02(Fri) 17:57) #100530
    │    ├ Re[6]: バックスラッシュ入力できず¥マークが入力されてしま.. /WebSurfer (22/09/02(Fri) 16:59) #100526
    │    └ Re[6]: バックスラッシュ入力できず¥マークが入力されてしま.. /伝説のカレー (22/09/02(Fri) 17:26) #100527
    └ Re[3]: バックスラッシュ入力できず¥マークが入力されてしま.. /WebSurfer (22/09/02(Fri) 16:54) #100525
      └ Re[4]: バックスラッシュ入力できず¥マークが入力されてしま.. /Tom2000 (22/09/02(Fri) 17:27) #100528
        ├ Re[5]: バックスラッシュ入力できず¥マークが入力されてしま.. /Hongliang (22/09/02(Fri) 17:36) #100529
        │└ Re[6]: バックスラッシュ入力できず¥マークが入力されてしま.. /Tom2000 (22/09/02(Fri) 18:27) #100531
        │  ├ Re[7]: バックスラッシュ入力できず¥マークが入力されてしま.. /Tom2000 (22/09/02(Fri) 18:28) #100532 解決済み
        │  └ Re[7]: バックスラッシュ入力できず¥マークが入力されてしま.. /WebSurfer (22/09/03(Sat) 11:34) #100534
        └ Re[5]: バックスラッシュ入力できず¥マークが入力されてしま.. /WebSurfer (22/09/02(Fri) 18:36) #100533


親記事 / ▼[ 100517 ] ▼[ 100518 ] ▼[ 100519 ]
■100516 / 親階層)  バックスラッシュ入力できず¥マークが入力されてしまいます
□投稿者/ Tom2000 (1回)-(2022/09/02(Fri) 13:49:22)

分類:[ASP.NET (VB)] 

開発環境:Visual Studio2013
使用言語:VB.NET

IEからEdgeへ変更作業をしている最中で、
input type=fileを使用している為、画面イメージが変更されてしまいました。
画面イメージはIEと似た形に修正することができたのですが、
ファイルを参照した結果、ファイルパスが「C:\fakepath\〜」になってしまいました。

ネットで調べた結果、
$('#filename').val($(this).val().replace(/^.*\\/, ""));
で修正可能との事でしたが、上記の通りバックスラッシュの箇所が\マークになってしまいます。

開発環境Visual Studio2013の設定を変更すればバックスラッシュが入力できるのでしょうか。

知識が足りず何を変更すればよいか解らず、ご教示いただきたく。よろしくお願いいたします。
[ □ Tree ] 返信 編集キー/

▲[ 100516 ] / 返信無し
■100517 / 1階層)  Re[1]: バックスラッシュ入力できず¥マークが入力されてしまいます
□投稿者/ WebSurfer (2547回)-(2022/09/02(Fri) 14:25:39)
No100516 (Tom2000 さん) に返信

> 上記の通りバックスラッシュの箇所が\マークになってしまいます。

文字コードは x005C で同じですがフォントの違いでバックスラッシュで表示さ
れるか円記号で表示されるかが違うのだと思います。

Visual Studio の[ツール]⇒[オプション]の「フォントおよび色」のフォント
を、MS ゴシックなど円記号で表示されるフォントにしてみてください。
[ 親 100516 / □ Tree ] 返信 編集キー/

▲[ 100516 ] / ▼[ 100520 ]
■100518 / 1階層)  Re[1]: バックスラッシュ入力できず¥マークが入力されてしまいます
□投稿者/ WebSurfer (2548回)-(2022/09/02(Fri) 14:31:40)
No100516 (Tom2000 さん) に返信

逆でした。円記号でなくバックスラッシュにしたいのでしたね。

×: MS ゴシックなど円記号で表示されるフォントにしてみてください。

〇: Cascadia Mono などバックスラッシュで表示されるフォントにしてみてください。
[ 親 100516 / □ Tree ] 返信 編集キー/

▲[ 100518 ] / 返信無し
■100520 / 2階層)  Re[2]: バックスラッシュ入力できず¥マークが入力されてしまいます
□投稿者/ Tom2000 (3回)-(2022/09/02(Fri) 15:42:00)
No100518 (WebSurfer さん) に返信
> ■No100516 (Tom2000 さん) に返信
>
> 逆でした。円記号でなくバックスラッシュにしたいのでしたね。
>
> ×: MS ゴシックなど円記号で表示されるフォントにしてみてください。
>
> 〇: Cascadia Mono などバックスラッシュで表示されるフォントにしてみてください。

ありがとうございます。
Cascadia Monoはありませんでしたので、フォントをCalibriにした所、バックスラッシュが入力できました。


「C:\fakepath\〜」の「fakepath」が表示されないように下記の様に修正してみましたが、
ファイル選択からデータの取得が出来なくなりました。
<input type="file" id="file" style="display:none;" onchange="$('#ctl00_ContentPlaceHolder_fake_input_file').val($(this).val().replace(/^.*\\/, "")"/>
<input id="fake_input_file" runat="server" type="text" value="" />
<input id="TESTAAAAA" type="button" value="ファイル選択" onClick="$('#file').click();"/>
※\はバックスラッシュになっています。


<input type="file" id="file" style="display:none;" onchange="$('#ctl00_ContentPlaceHolder_fake_input_file').val($(this).val())"/>
<input id="fake_input_file" runat="server" type="text" value="" />
<input id="TESTAAAAA" type="button" value="ファイル選択" onClick="$('#file').click();"/>
だと「C:\fakepath\〜」のデータが取得できており、fake_input_fileにデータが表示されています。

「C:\fakepath\〜」の変換方法の何処が間違っていますでしょうか。
よろしくお願いします。




[ 親 100516 / □ Tree ] 返信 編集キー/

▲[ 100516 ] / ▼[ 100521 ]
■100519 / 1階層)  Re[1]: バックスラッシュ入力できず¥マークが入力されてしまいます
□投稿者/ WebSurfer (2549回)-(2022/09/02(Fri) 15:34:05)
No100516 (Tom2000 さん) に返信

ひょっとして Visual Studio のエディタの話ではなく、ASP.NET Web アプリがブラウザ上
に表示された時の話ですか?

そうだとして、

> IEからEdgeへ変更作業をしている最中で、
> input type=fileを使用している為、画面イメージが変更されてしまいました。
> 画面イメージはIEと似た形に修正することができたのですが、
> ファイルを参照した結果、ファイルパスが「C:\fakepath\〜」になってしまいました。

というのが意味不明なのですが・・・
[ 親 100516 / □ Tree ] 返信 編集キー/

▲[ 100519 ] / ▼[ 100522 ] ▼[ 100525 ]
■100521 / 2階層)  Re[2]: バックスラッシュ入力できず¥マークが入力されてしまいます
□投稿者/ Tom2000 (4回)-(2022/09/02(Fri) 15:46:51)
No100519 (WebSurfer さん) に返信
> ■No100516 (Tom2000 さん) に返信
>
> ひょっとして Visual Studio のエディタの話ではなく、ASP.NET Web アプリがブラウザ上
> に表示された時の話ですか?
>
> そうだとして、
>
>>IEからEdgeへ変更作業をしている最中で、
>>input type=fileを使用している為、画面イメージが変更されてしまいました。
>>画面イメージはIEと似た形に修正することができたのですが、
>>ファイルを参照した結果、ファイルパスが「C:\fakepath\〜」になってしまいました。
>
> というのが意味不明なのですが・・・

すみません。
バックスラッシュの件はエディタ内の話です。
Web アプリに「C:\fakepath\〜」が表示されるのを修正するためにはバックスラッシュが
必要と思われましたので、質問させて頂きました。
よろしくお願いします。



[ 親 100516 / □ Tree ] 返信 編集キー/

▲[ 100521 ] / ▼[ 100523 ]
■100522 / 3階層)  Re[3]: バックスラッシュ入力できず¥マークが入力されてしまいます
□投稿者/ 伝説のカレー (36回)-(2022/09/02(Fri) 16:07:17)
ええっと、バックスラッシュと円マークはフォントの違いによって見た目が変わってるだけで同じ文字ですよ
プログラムでの置換は必要ないです
ブラウザで表示したときのフォントを変えるならcssでfont-familyを指定すればよいです
[ 親 100516 / □ Tree ] 返信 編集キー/

▲[ 100522 ] / ▼[ 100524 ]
■100523 / 4階層)  Re[4]: バックスラッシュ入力できず¥マークが入力されてしまいます
□投稿者/ 伝説のカレー (37回)-(2022/09/02(Fri) 16:13:26)
質問は、ファイルパスが表示されてるのをファイル名だけにしたいってことですかね
[ 親 100516 / □ Tree ] 返信 編集キー/

▲[ 100523 ] / ▼[ 100530 ] ▼[ 100526 ] ▼[ 100527 ]
■100524 / 5階層)  Re[5]: バックスラッシュ入力できず¥マークが入力されてしまいます
□投稿者/ Tom2000 (6回)-(2022/09/02(Fri) 16:35:44)
No100523 (伝説のカレー さん) に返信
> 質問は、ファイルパスが表示されてるのをファイル名だけにしたいってことですかね

すみません。
「C:\fakepath\ファイル名」表示されている所を、
正常ファイルへのパス+ファイル名で表示できるように方法を探しております。
よろしくお願いします。

[ 親 100516 / □ Tree ] 返信 編集キー/

▲[ 100524 ] / 返信無し
■100530 / 6階層)  Re[6]: バックスラッシュ入力できず¥マークが入力されてしまいます
□投稿者/ 魔界の仮面弁士 (3453回)-(2022/09/02(Fri) 17:57:05)
2022/09/02(Fri) 18:00:02 編集(投稿者)

No100524 (Tom2000 さん) に返信
> 「C:\fakepath\ファイル名」表示されている所を、
> 正常ファイルへのパス+ファイル名で表示できるように方法を探しております。

input type=file の話をしているのですね。
複数ファイルを指定するモードや、フォルダーを選択させるモードもありますが、
ここでは単一ファイルを選択するケースでしょうか。

type=file の場合、その value プロパティには選択されたファイルのパスが入りますが
そのパスの内容にフォルダー名を含めるか否かは、ブラウザーによって異なります。

現状はセキュリティの都合でパスは明かされないことになっており、
ブラウザーによっては "C:\fakepath\〜〜" のパスが使われることになります。
非 Windows 環境のブラウザなら、また別の形式のパスになりえますが、
それはブラウザごとの仕様であり、Web アプリ側でどうこうするものでは無いでしょう。


また、現状は display:none; を指定していることから、下記のようにしてボタンを隠し、
代わりにデザインをかえた label 等で表現している状況かと思います。
https://proengineer.internous.co.jp/content/columnfeature/7605

フォルダーの区切りに使われる U+005C の "\" が半角バックスラッシュとなるのか
半角円マークとなるのか半角ウォン記号となるのかは、HTML 側の lang 属性や
CSS でのフォント指定によるものです。見た目が異なるのは歴史的な事情によるもので、
7bit の ASCII コードを拡張した国際規格 ISO/IEC 646 という文字集合において、
0x5c "\" を含む幾つかのエリアを「各国で再定義が可能なバリアント領域」と
定めたことによって、文字コードによって異なる文字が割り当てられたことに由来します。

たとえば 0x7E "~" なども同様の理由により、環境によって見た目が異なる可能性がありますね。
https://ja.wikipedia.org/wiki/ISO/IEC_646
https://www.tohoho-web.com/ex/charset.html#iso-iec-646
[ 親 100516 / □ Tree ] 返信 編集キー/

▲[ 100524 ] / 返信無し
■100526 / 6階層)  Re[6]: バックスラッシュ入力できず¥マークが入力されてしまいます
□投稿者/ WebSurfer (2551回)-(2022/09/02(Fri) 16:59:03)
No100524 (Tom2000 さん) に返信

No100525 に書いた話と思ったが違うか・・・

> 「C:\fakepath\ファイル名」表示されている所を、
> 正常ファイルへのパス+ファイル名で表示できるように方法を探しております。

それも意味不明なんですけど。「正常ファイルへのパス」って何?

ここに書いてないことは知り得ない第三者が読んでわかるように十分注意を払って書きましょう。
[ 親 100516 / □ Tree ] 返信 編集キー/

▲[ 100524 ] / 返信無し
■100527 / 6階層)  Re[6]: バックスラッシュ入力できず¥マークが入力されてしまいます
□投稿者/ 伝説のカレー (38回)-(2022/09/02(Fri) 17:26:53)
No100524 (Tom2000 さん) に返信
> 「C:\fakepath\ファイル名」表示されている所を、
> 正常ファイルへのパス+ファイル名で表示できるように方法を探しております。

ファイル名だけならthis.files[0].nameで取れました

こうかな、jquery詳しくないのでこんな雰囲気です
<input type="file" id="file" style="display:none;" onchange="$('#ctl00_ContentPlaceHolder_fake_input_file').val(this.files[0].name)"/>

フルパスは取れないような…
FileReaderを使ってファイルの内容を読み取ることはできるようなんですけどパスはわからなかったです
セキュリティ的にパスを勝手に書き換えられたら困るっていうのはあると思うんですけど、その兼ね合いで入力したパスも取れなかったりするんですかね
わかりませんでした
[ 親 100516 / □ Tree ] 返信 編集キー/

▲[ 100521 ] / ▼[ 100528 ]
■100525 / 3階層)  Re[3]: バックスラッシュ入力できず¥マークが入力されてしまいます
□投稿者/ WebSurfer (2550回)-(2022/09/02(Fri) 16:54:17)
No100521 (Tom2000 さん) に返信

> バックスラッシュの件はエディタ内の話です。
> Web アプリに「C:\fakepath\〜」が表示されるのを修正するためにはバックスラッシュが
> 必要と思われましたので、質問させて頂きました。

XY 問題(X という課題・問題があって、それを解決するために Y という方法を考えて、Y に関する
質問をしたが、Y は X の解決策にはなってない)のような気がしますね。

input type=file でファイルを選択したときファイルがブラウザ上に表示されるようになっているが、
それが C:\xxxx\yyy\filename.ext というようにフルパスで表示されるので、フルパスの文字列から
C:\xxxx\yyy\ を除去して表示したいという話ですか?

で、現状は以下のコードで、これだとフルパスになるからそれを何とかしたいということですか?

> <input type="file" id="file" style="display:none;" onchange="$('#ctl00_ContentPlaceHolder_fake_input_file').val($(this).val())"/>
> <input id="fake_input_file" runat="server" type="text" value="" />
> <input id="TESTAAAAA" type="button" value="ファイル選択" onClick="$('#file').click();"/>
[ 親 100516 / □ Tree ] 返信 編集キー/

▲[ 100525 ] / ▼[ 100529 ] ▼[ 100533 ]
■100528 / 4階層)  Re[4]: バックスラッシュ入力できず¥マークが入力されてしまいます
□投稿者/ Tom2000 (8回)-(2022/09/02(Fri) 17:27:56)
No100525 (WebSurfer さん) に返信
> ■No100521 (Tom2000 さん) に返信
>
>>バックスラッシュの件はエディタ内の話です。
>>Web アプリに「C:\fakepath\〜」が表示されるのを修正するためにはバックスラッシュが
>>必要と思われましたので、質問させて頂きました。
>
> XY 問題(X という課題・問題があって、それを解決するために Y という方法を考えて、Y に関する
> 質問をしたが、Y は X の解決策にはなってない)のような気がしますね。
>
> input type=file でファイルを選択したときファイルがブラウザ上に表示されるようになっているが、
> それが C:\xxxx\yyy\filename.ext というようにフルパスで表示されるので、フルパスの文字列から
> C:\xxxx\yyy\ を除去して表示したいという話ですか?
>
> で、現状は以下のコードで、これだとフルパスになるからそれを何とかしたいということですか?
>
>><input type="file" id="file" style="display:none;" onchange="$('#ctl00_ContentPlaceHolder_fake_input_file').val($(this).val())"/>
>><input id="fake_input_file" runat="server" type="text" value="" />
>><input id="TESTAAAAA" type="button" value="ファイル選択" onClick="$('#file').click();"/>


申し訳ありません。

<input type="file" id="file" style="display:none;" onchange="$('#ctl00_ContentPlaceHolder_fake_input_file').val($(this).val())"/>
<input id="fake_input_file" runat="server" type="text" value="" />
<input id="TESTAAAAA" type="button" value="ファイル選択" onClick="$('#file').click();"/>

現状、上記のコードでEdgeにてIEと同じ様な画面イメージに変更することはできましたが、
ファイル選択で取得した結果をブラウザ上に表示した時、「C:\fakepath\ファイル名」になっている状態です。

正常ファイルへのパス+ファイル名というのは、
仮に「C:\Test20220902」フォルダにTestA.txtファイルがあったとして、
ファイル選択実行後、ブラウザ上にC:\Test20220902\TestA.txtと表示できればと思っております。




バックスラッシュの件は、fakepathを修正する件をネットで調べていた時に、
修正方法のコードにバックスラッシュが記載されていましたが、
私の開発環境ではバックスラッシュが入力できなかった為、質問させて頂きました。

解り難くしてしまい申し訳ありませんでした。

[ 親 100516 / □ Tree ] 返信 編集キー/

▲[ 100528 ] / ▼[ 100531 ]
■100529 / 5階層)  Re[5]: バックスラッシュ入力できず¥マークが入力されてしまいます
□投稿者/ Hongliang (1252回)-(2022/09/02(Fri) 17:36:25)
セキュリティのため、ユーザーローカルのパスを取得することはできません。
仕様を再考してください。
[ 親 100516 / □ Tree ] 返信 編集キー/

▲[ 100529 ] / ▼[ 100532 ] ▼[ 100534 ]
■100531 / 6階層)  Re[6]: バックスラッシュ入力できず¥マークが入力されてしまいます
□投稿者/ Tom2000 (9回)-(2022/09/02(Fri) 18:27:16)
皆様、色々情報を頂きありがとうございます。
セキュリティの都合でパスの取得が難しいことが解りました。
仕様をどうするか検討させて頂きます。
ありがとうございました。

[ 親 100516 / □ Tree ] 返信 編集キー/

▲[ 100531 ] / 返信無し
■100532 / 7階層)  Re[7]: バックスラッシュ入力できず¥マークが入力されてしまいます
□投稿者/ Tom2000 (11回)-(2022/09/02(Fri) 18:28:59)
No100531 (Tom2000 さん) に返信
> 皆様、色々情報を頂きありがとうございます。
> セキュリティの都合でパスの取得が難しいことが解りました。
> 仕様をどうするか検討させて頂きます。
> ありがとうございました。
>
解決済み
[ 親 100516 / □ Tree ] 返信 編集キー/

▲[ 100531 ] / 返信無し
■100534 / 7階層)  Re[7]: バックスラッシュ入力できず¥マークが入力されてしまいます
□投稿者/ WebSurfer (2553回)-(2022/09/03(Sat) 11:34:08)
No100531 (Tom2000 さん) に返信

クライアント側だけの話で No100533 の話は関係なかったですね。

以下のような話と理解しました。

(1) IE と Edge での input type="file" の表示の問題

(2) IE ではファイルを選択するとテキストボックスには選択したファイルがフルパス
  で表示される。例えば、

  C:\Users\surfe\picture\sample.jpg

(3) Edge での表示を IE と同様にするため以下のコードを書いた。

<input type="file" id="file" style="display:none;"
onchange="$('#ctl00_ContentPlaceHolder_fake_input_file').val($(this).val())"/>
<input id="fake_input_file" runat="server" type="text" value="" />
<input id="TESTAAAAA" type="button" value="ファイル選択" onClick="$('#file'

(4) ところが上のコードでは、テキストボックスに表示されるのは、 

  C:\fakepath\sample.jpg

  となってしまう。


やりたいことは、

> 「C:\fakepath\ファイル名」表示されている所を、
> 正常ファイルへのパス+ファイル名で表示できるように方法を探しております。

ということで、IE の場合と同様にしたいということだと思いますが、それは Edge では
無理です。

ファイル名のみ(上の例では sample.jpg のみ)を表示するようにしてはいかがですか?

それなら No100527 で伝説のカレーさんが書いているように this.files[0].name で取得
できます。

<input type="file" id="file" style="display:none;"
onchange="$('#<%=fake_input_file.ClientID%>').val(this.files[0].name)"/>
<input id="fake_input_file" runat="server" type="text" value="" />
<input id="TESTAAAAA" type="button" value="ファイル選択" onClick="$('#file').click();"/>

[ 親 100516 / □ Tree ] 返信 編集キー/

▲[ 100528 ] / 返信無し
■100533 / 5階層)  Re[5]: バックスラッシュ入力できず¥マークが入力されてしまいます
□投稿者/ WebSurfer (2552回)-(2022/09/02(Fri) 18:36:58)
No100528 (Tom2000 さん) に返信

IE で input type="file" を使ってファイルをアップロードすると設定によっては送信
データの Content-Disposition: ... filename="xxx" の xxx はフルパスになる(詳細
下記 URL 参照)のだけどその話と関係があるのかな?

IE でアップロードする際のファイル名
http://surferonwww.info/BlogEngine/post/2015/08/06/filename-when-uploading-by-internet-explorer.aspx
[ 親 100516 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -