Путь загрузки скрывается путем передачи идентификатора в базе данных, а затем чтения пути в базе данных через переданный идентификатор на другой странице.
1. Метод реализован на C# (требуется только код .ASPX.CS)
string sel_sql="выберите FileVisualPath из TabMailAttachFiles, где FileID="+Request.QueryString[
"destFileName"].ToString(); // строка destFileName = Request.QueryString["destFileName"]!=null?Request.QueryString["destFileName" ]:"";
строка destFileName=ROA.Components.fune_commerce.Execad(sel_sql).Tables[0].Rows[0][0].ToString();
destFileName = Server.MapPath(".")+destFileName;
destFileName = Server.UrlDecode(destFileName);
если(Файл.Существует(destFileName))
{
FileInfo fi = новый FileInfo (destFileName);
Ответ.Очистить();
Response.ClearHeaders();
Ответ.Буфер = ложь;
//Response.AppendHeader("Content-Disposition","attachment;filename=" +HttpUtility.UrlEncode(Path.GetFileName(destFileName),System.Text.Encoding.Default));
Response.AppendHeader("Content-Disposition","attachment;filename=" +HttpUtility.UrlEncode(Path.GetFileName(destFileName),System.Text.Encoding.UTF8));
Response.AppendHeader("Content-Length",fi.Length.ToString());
Response.ContentType="application/octet-stream";
Response.WriteFile(destFileName);
Ответ.Смыв();
Ответ.Конец();
}
еще
{
Response.Write("<script langauge=javascript>alert('Файл не существует!');history.go(-1);</script>");
Ответ.Конец();
}
2. Способ реализации в ASP
<!--#include file="conn.asp" -->
<%
Response.Buffer = правда
Ответ.Очистить
тусклый URL
Тусклый fso, fl, flsize
dimDname
Dim objStream, ContentType, flName, isre, url1
'****************************************** передается при вызове файла загрузки имя
m_ID=trim(request.QueryString("ID"))
set rs=Server.CreateObject("adodb.recordset")
sql="выберите * из просмотра данных, где xsf=true и id="&m_ID
rs.open sql,conn,1,1
если не rs.eof, то
Dname=rs("путь")
еще
Response.Write("не найдено")
Ответ.конец
конец, если
rs.close:set rs=ничего
'********************************************** ****************
Если Dname<>"" Тогда
'******************************Каталог сервера, где хранятся загруженные файлы
url=Server.MapPath(Dname)
еще
Response.Write("не найдено")
Ответ.конец
Конец, если
Set fso=Server.CreateObject("Scripting.FileSystemObject")
Установите fl=fso.getfile(url)
flsize=fl.size
flName=fl.name
Установить fl=Ничего
Установить fso=Ничего
Установите objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
URL-адрес objStream.LoadFromFile
Выберите регистр lcase(Right(flName, 4))
Дело ".asf"
ContentType = "видео/x-ms-asf"
Дело ".avi"
Тип контента = "видео/avi"
Дело ".doc"
ContentType = "приложение/мсворд"
Дело ".zip"
ContentType = "приложение/zip"
Дело ".xls"
ContentType = "приложение/vnd.ms-excel"
Дело ".gif"
ContentType = "изображение/гиф"
Случай ".jpg", "jpeg"
ТипСодержимого = "изображение/jpeg"
Дело ".bmp"
ТипСодержимого = "изображение/bmp"
Дело ".ppt"
ContentType = "приложение/vnd.ms-powerpoint"
Дело ".mdb"
ContentType = "приложение/x-msaccess"
Случай ".wav"
ContentType = "аудио/wav"
Дело ".mp3"
КонтентТип = "аудио/mpeg3"
Случай ".mpg", "mpeg"
ContentType = "видео/mpeg"
Дело ".rtf"
ContentType = "приложение/rtf"
Случай ".htm", "html"
КонтентТип = "текст/html"
Дело ".txt"
ContentType = "текст/обычный"
Другое дело
ContentType = "приложение/октет-поток"
Конец выбора
Response.AddHeader "Content-Disposition", "attachment; filename=" & flName
Response.AddHeader "Content-Length", flsize
Response.Charset = "UTF-8"
Response.ContentType = Тип контента
Response.BinaryWrite objStream.Read
Ответ.Flush
ответ.Очистить()
objStream.Close
Установить objStream = Ничего
%>
Источник: БЛОГ «Облака, затерянные в голубом небе».