как заменить локальный хост с его фактическим путем? - PullRequest
0 голосов
/ 10 января 2012

Я использую следующий код для открытия файла.Когда мне предложили открыть / сохранить файл, он показал, что файл был с локального хоста, но файл мог находиться на сетевом диске.Можно ли как-то заменить локальный узел его фактическим местоположением?

byte[] bts = System.IO.File.ReadAllBytes(fileName);
            Response.Clear();
            Response.ClearHeaders();
            Response.AddHeader("Content-Type", "Application/octect-stream");
            Response.AddHeader("Content-Length", bts.Length.ToString());
            Response.AddHeader("Content-Disposition", "attachment; filename=" + ((LinkButton)sender).Text);
            Response.BinaryWrite(bts);
            Response.Flush();
            Response.End();           

Редактировать: ((LinkButton) отправитель). Текст) это имя файла без пути.Фактическое местоположение файла, например, Y: \ SPR_Upload, а Y - сетевой диск, сопоставленный с C $ (\ m6300-7).Когда я щелкнул по файлу, мне предложили открыть или сохранить XXX (24,1 КБ) с локального хоста?Я хочу заменить localhost на m6300-7.Как мне это сделать?

1 Ответ

1 голос
/ 10 января 2012

Кажется, проблема в том, что вы используете

((LinkButton)sender).Text

, чтобы получить имя файла. Если вызывающая ссылка LinkButton жестко закодирована в localhost в значение Text, вам придется исправить ее там.

Если вы жестко закодировали свойство Text вашей LinkButton в что-то вроде http://localhost:0000/...., вам необходимо исправить это. С почти нулевыми исключениями все ссылки в вашем приложении должны быть относительными, например /home/index или /support/default.aspx.

Обратите внимание, что заголовок Content-Disposition просто задает имя файла, которое браузер использует или представляет пользователю - оно может быть установлено на что угодно и не должно ссылаться на реальный файл на сервере.

Таким образом, если вам просто нужно имя файла (удаление всей информации о пути и т. Д.), Вы можете использовать

var fileName = System.IO.Path.GetFileName(((LinkButton)Sender).Text);

затем используйте полученное значение в присваивании заголовка Content-Disposition.

Обновление

Когда браузер говорит «Хотите загрузить xxxx.xx с localhost?», Он получает имя сервера (в данном случае localhost) с URL-адреса, который используется для загрузки файла. Если вы запустите одно и то же приложение, скажем, на «www.mysite.com», браузер скажет: «Хотите загрузить xxxx.xx с www.mysite.com?» По соображениям безопасности и т. Д. Вы не сможете переопределить имя сервера, используемого в этом приглашении.

Заголовок Content-Disposition просто устанавливает имя файла, которое браузер показывает пользователю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...