ASP网站大文件下载的问题

ASP网站大文件下载的问题,第1张

<%

host=Request.ServerVariables("HTTP_HOST")

fwym="http://" &host &Request.ServerVariables("SCRIPT_NAME")

wenjian=request("wenjian")

select case true

case right(lcase(wenjian),4)=".asp"

response.write "该类型文件不允许下载。"

response.end

case right(lcase(wenjian),4)=".php"

response.write "该类型文件不允许下载烂如。"

response.end

case right(lcase(wenjian),5)=".aspx"

response.write "该饥知启类型文件不允许下载。"

response.end

end select

wenjian=replace(wenjian,"/","\")

a=split(wenjian,"\")

filename=a(ubound(a))

Set fso = CreateObject("Scripting.FileSystemObject")

fileurl=left(fwym,len(fwym)-8) &wenjian

fileurl=replace(fileurl,"\","猛历/")

if instr(1,wenjian,":")=0 then wenjian=server.mappath(wenjian)

'设置可下载文件大小上限

maxsize=50000000

'response.write wenjian

'response.end

set f1=fso.getfile(wenjian)

if f1.size>maxsize then

response.write "文件太大了,不允许下载。" &dxzh(f1.size) &"只支持" &dxzh(maxsize) &"以内的文件下载"

response.end

end if

if instr(1,wenjian,":")=0 then

'response.write fileurl

response.redirect fileurl

response.end

end if

Response.ContentType = "application/octet-stream"

Response.AddHeader "content-disposition", "attachmentfilename =" &filename

set objstream = Server.CreateObject("adodb.stream")

objstream.Mode = 3

objstream.Type = 1

objstream.Open

objstream.LoadFromFile (wenjian)

BytesToBstr = objstream.Read

response.binarywrite BytesToBstr

function dxzh(dx)

zijieshu = dx &"字节"

kbshu = FormatNumber(dx / 1024, "0.0") &"KB"

mbshu = FormatNumber(dx / 1024 / 1024, 2) &"MB"

fsize = dx

If fsize / 1024 <1 Then dxzh = zijieshu

If fsize / 1024 >= 1 And fsize / 1024 <1024 Then dxzh = kbshu

If fsize / 1024 >= 1024 Then dxzh = mbshu

end function

%>

场景描述

在B/S环境下 客户提出批量导出员工照片功能 具体为 选中一个部门或者单位 系统能够批量下载所选单元的照片 下载到用户客户端

解决思路

由于系统中员工的照片存储在服务器硬盘上 因此 应该有两种方式供用搭哗户选择 其一 写一个C/S客户端 利用客户端功能 实现客户端批量下载 *** 作 其二 在现有ASP NET环境下 将所需照片文件合并成一个文件下载到用户客户端 比较而言 两种思路的难度都不大 但是考虑到系统的统一性 最终决定采用方案二 将文件打包后下载

实现步骤

在用户 *** 作界面 由用户选择员工 系统根据所选人员 在服务器上创建用于存储所选文件的临时文件夹 将所选文件拷贝至临时文件夹 然后调用RAR程序 对临时文件夹进行压缩 然后输出到客户端 最后删除临时文件夹

部分关键代码

创建临时文件夹

string Folder = DateTime Now ToString( HHMMss )

string tempFolder = Path Combine(ImagesPath Folder)

Directory CreateDirectory(tempFolder)

var empList = rs ToList()

拷贝照片文件

foreach (var x in empList)

{

File Copy(ImagesPath + @ \ + x ID + jpg tempFolder + @ \ + x DeptName + + x Name + + x ID + jpg )

}

产生RAR文件 及文件输出

RARsave(tempFolder tempFolder Folder)

ResponseFile(tempFolder + @ \ + Folder + rar )

public void RARsave(string patch string rarPatch string rarName)

{

String the_rar

RegistryKey the_Reg

Object the_Obj

String the_Info

ProcessStartInfo the_StartInfo

Process the_Process

try

{

the_Reg = Registry ClassesRoot OpenSubKey(@ WinRAR )

the_Obj = the_Reg GetValue( )

the_rar = the_Obj ToString()

the_Reg Close()

the_rar = the_rar Substring( the_rar Length )

Directory CreateDirectory(patch)

//命令参数

//the_Info = a    + rarName +   + @ C:Test? txt //文件压缩

the_Info = a + rarName +   + patch +   r

the_StartInfo = new ProcessStartInfo()

the_StartInfo FileName = WinRar //the_rar

the_StartInfo Arguments = the_Info

 知旁行 the_StartInfo WindowStyle = ProcessWindowStyle Hidden

//打包文件存启旁放目录

the_StartInfo WorkingDirectory = rarPatch

the_Process = new Process()

the_Process StartInfo = the_StartInfo

the_Process Start()

the_Process WaitForExit()

the_Process Close()

}

catch (Exception ex)

{

throw ex

}

}

protected void ResponseFile(string fileName)

{

FileInfo fileInfo = new FileInfo(fileName)

Response Clear()

Response ClearContent()

Response ClearHeaders()

Response AddHeader( Content Disposition attachmentfilename= + fileName)

Response AddHeader( Content Length fileInfo Length ToString())

Response AddHeader( Content Transfer Encoding binary )

Response ContentType = application/octet stream

Response ContentEncoding = System Text Encoding GetEncoding( gb )

Response WriteFile(fileInfo FullName)

Response Flush()

string tempPath = fileName Substring( fileName LastIndexOf( \\ ))

DelDir(tempPath)

Directory Delete(tempPath)

Response End()

}

lishixinzhi/Article/program/net/201311/13948


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12239463.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存