【解決方法】ファイル名にスペースが含まれている場合、ファイルを正しくダウンロードするための href リンクを取得するにはどうすればよいですか。


ファイル名にスペースが含まれていない限り、コードは機能します。 当初、リンクにはサーバー名と共有名のみがリストされ、ファイル名にはスペースが含まれていたため削除されていました。 これは path.replace を利用することで修正されました。 したがって、リンクは正しく表示されますが、リンクをクリックすると、%20 がスペースに変換されない限り、ファイルは正しくダウンロードされません。

では、スペースを %20 に置き換えてリンクを正しく表示し、ユーザーがリンクをクリックしたときに %20 をスペースに戻すにはどうすればよいでしょうか?

元。 \\Server\Share\my file.docx を使用すると、リンクに file://Server/Share のみが表示され、リンクが使用できなくなります。

置換部分を追加すると、リンクに file://Server/Share/my%2520file.docx が表示されますが、リンクをクリックすると表示できないメッセージが表示されます。 %2520 を手動でスペースに置き換えると、期待どおりに[開く/保存]ダイアログ ボックスが表示されます。

繰り返しますが、ファイル名にスペースが含まれていない場合、プロセスは正常に機能します。

参考までに、これはイントラネット上にあり、現在 IE を使用しています。

私が試したこと:

<pre> string Path = "\\\\server\\share\\" + ddlDept.SelectedValue + "\\" + ddlWI.SelectedValue;
            if (File.Exists(Path))
            {
                Path = Path.Replace(" ", "%20");
                Label1.Text = "Click on this link to retrieve your file, <a href="https://www.codeproject.com/Questions/1224362/ + Path + ">ClickMe</a>";
            }

解決策 1

おそらくこれは明白すぎるかもしれませんが、リンクのパスとそこに表示されるテキストが同一でなければならない(または相互に何らかの関係がなければならない)というルールはありません。

したがって、リンク値を使用してリンクを作成し、人間が読めるバージョンでリンクにラベルを付けます。

解決策 2

属性値を引用符で囲みます。

string Path = "\\\\server\\share\\" + ddlDept.SelectedValue + "\\" + ddlWI.SelectedValue;
if (File.Exists(Path))
{
    Label1.Text = "Click on this link to retrieve your file, <a href=\""https://www.codeproject.com/Questions/1224362/ + Path + "\">ClickMe</a>";
}

注意: ユーザーは、Web サーバーと同じネットワーク上にある場合にのみリンクにアクセスできます。

コメント

タイトルとURLをコピーしました