asp实现上传下载
A. 请问用ASP如何能实现文件的上传和下载
<table width=700 align=center><tr><td>
<body topmargin="10" bgcolor="#ffffff">
<%
Dim sStyleID, sUploadDir, sCurrDir, sDir
sPosition = sPosition & "上传文件管理"
Call Header()
Call Content()
Call Footer()
Sub Content()
If IsObjInstalled("Scripting.FileSystemObject") = False Then
Response.Write "此功能要求服务器支持文件系统对象(FSO),而你当前的服务器不支持!"
Exit Sub
End If
' 初始化传入参数
Call InitParam()
Select Case sAction
Case "DELALL" ' 删除所有文件
Call DoDelAll()
Case "DEL" ' 删除指定文件
Call DoDel()
Case "DELFOLDER" ' 删除文件夹
Call DoDelFolder()
End Select
' 显示文件列表
Call ShowList()
End Sub
' UploadFile目录下的所有文件列表
Sub ShowList()
If sCurrDir = "" Then Exit Sub
Response.Write "<table border=1 style='border-collapse: collapse' bordercolor='#C0C0C0' cellpadding=3 cellspacing=0>" & _
"<form action='?id=" & sStyleID & "&dir=" & sDir & "&action=del' method=post name=myform>" & _
"<tr align=center>" & _
"<td width=50 height=25 background='../images/bj5.jpg' style='color:ffffff'>类型</th>" & _
"<td width=140 background='../images/bj5.jpg' style='color:ffffff'>文件地址</th>" & _
"<td width=100 background='../images/bj5.jpg' style='color:ffffff'>大小</th>" & _
"<td width=130 background='../images/bj5.jpg' style='color:ffffff'>最后访问</th>" & _
"<td width=130 background='../images/bj5.jpg' style='color:ffffff'>上传日期</th>" & _
"<td width=30 background='../images/bj5.jpg' style='color:ffffff'>删除</th>" & _
"</tr>"
Dim sCurrPage, nCurrPage, nFileNum, nPageNum, nPageSize
sCurrPage = Trim(Request("page"))
nPageSize = 20
If sCurrpage = "" Or Not IsNumeric(sCurrPage) Then
nCurrPage = 1
Else
nCurrPage = CLng(sCurrPage)
End If
Dim oFSO, oUploadFolder, oUploadFiles, oUploadFile, sFileName
Set oFSO = Server.CreateObject("Scripting.FileSystemObject")
On Error Resume Next
Set oUploadFolder = oFSO.GetFolder(Server.MapPath(sCurrDir))
If Err.Number>0 Then
Response.Write "</table>无效的目录!"
Exit Sub
End If
If sDir <> "" Then
Response.Write "<tr align=center>" & _
"<td><img border=0 src='sysimage/file/folderback.gif'></td>" & _
"<td align=left colspan=5><a href=""?id=" & sStyleID & "&dir="
If InstrRev(sDir, "/") > 1 Then
Response.Write Left(sDir, InstrRev(sDir, "/") - 1)
End If
Response.Write """>返回上一级目录</a></td></tr>"
End If
Dim oSubFolder
For Each oSubFolder In oUploadFolder.SubFolders
Response.Write "<tr align=center>" & _
"<td><img border=0 src='sysimage/file/folder.gif'></td>" & _
"<td align=left colspan=4><a href=""?id=" & sStyleID & "&dir="
If sDir <> "" Then
Response.Write sDir & "/"
End If
Response.Write oSubFolder.Name & """>" & oSubFolder.Name & "</a></td>" & _
"<td><a href='?id=" & sStyleID & "&dir=" & sDir & "&action=delfolder&foldername=" & oSubFolder.Name & "'>删除</a></td></tr>"
Next
Set oUploadFiles = oUploadFolder.Files
nFileNum = oUploadFiles.Count
nPageNum = Int(nFileNum / nPageSize)
If nFileNum Mod nPageSize > 0 Then
nPageNum = nPageNum+1
End If
If nCurrPage > nPageNum Then
nCurrPage = 1
end If
Dim i
i = 0
For Each oUploadFile In oUploadFiles
i = i + 1
If i > (nCurrPage - 1) * nPageSize And i <= nCurrPage * nPageSize Then
sFileName = oUploadFile.Name
Response.Write "<tr align=center>" & _
"<td>" & FileName2Pic(sFileName) & "</td>" & _
"<td align=center><a href=""" & sCurrDir & sFileName & """ target=_blank>"
if right(sFileName,3)="jpg" or right(sFileName,3)="JPG" or right(sFileName,3)="gif" or right(sFileName,3)="GIF" or right(sFileName,3)="BMP" or right(sFileName,3)="bmp" or right(sFileName,3)="png" or right(sFileName,3)="PNG" then
Response.Write "<img border=0 width=80 height=60 src="&sCurrDir& sFileName&" ><BR>"
end if
Response.Write sFileName & "</a></td>" & _
"<td>" & oUploadFile.size & " B </td>" & _
"<td>" & oUploadFile.datelastaccessed & "</td>" & _
"<td>" & oUploadFile.datecreated & "</td>" & _
"<td><input type=checkbox name=delfilename value=""" & sFileName & """></td></tr>"
Elseif i > nCurrPage * nPageSize Then
Exit For
End If
Next
Set oUploadFolder = Nothing
Set oUploadFiles = Nothing
If nFileNum <= 0 Then
Response.Write "<tr><td colspan=6>指定目录下现在还没有文件!</td></tr>"
End If
Response.Write "</table>"
If nFileNum > 0 Then
' 分页
Response.Write "<table border=0 cellpadding=3 cellspacing=0 width='100%'><tr><td align=center>"
If nCurrPage > 1 Then
Response.Write "<a href='?id=" & sStyleID & "&dir=" & sDir & "&page=1'>首页</a><a href='?id=" & sStyleID & "&dir=" & sDir & "&page="& nCurrPage - 1 & "'>上一页</a>"
Else
Response.Write "首页上一页"
End If
If nCurrPage < i / nPageSize Then
Response.Write "<a href='?id=" & sStyleID & "&dir=" & sDir & "&page=" & nCurrPage + 1 & "'>下一页</a><a href='?id=" & sStyleID & "&dir=" & sDir & "&page=" & nPageNum & "'>尾页</a>"
Else
Response.Write "下一页尾页"
End If
Response.Write "共<b>" & nFileNum & "</b>个页次:<b><span class=highlight2>" & nCurrPage & "</span>/" & nPageNum & "</b><b>" & nPageSize & "</b>个文件/页"
Response.Write "</td></tr></table>"
End If
Response.Write "<p align=center><input type=submit name=b value=' 删除选定的文件 '> <input type=button name=b1 value=' 清空所有文件 ' onclick=""javascript:if (confirm('你确定要清空所有文件吗?')) {location.href='admin_uploadfile.asp?id=" & sStyleID & "&dir=" & sDir & "&action=delall';}""></p></form>"
End Sub
' 删除指定的文件
Sub DoDel()
On Error Resume Next
Dim sFileName, oFSO, sMapFileName
Set oFSO = Server.CreateObject("Scripting.FileSystemObject")
For Each sFileName In Request.Form("delfilename")
sMapFileName = Server.MapPath(sCurrDir & sFileName)
If oFSO.FileExists(sMapFileName) Then
oFSO.DeleteFile(sMapFileName)
End If
Next
Set oFSO = Nothing
End Sub
' 删除所有的文件
Sub DoDelAll()
On Error Resume Next
Dim sFileName, oFSO, sMapFileName, oFolder, oFiles, oFile
Set oFSO = Server.CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(Server.MapPath(sCurrDir))
Set oFiles = oFolder.Files
For Each oFile In oFiles
sFileName = oFile.Name
sMapFileName = Server.MapPath(sCurrDir & sFileName)
If oFSO.FileExists(sMapFileName) Then
oFSO.DeleteFile(sMapFileName)
End If
Next
Set oFile = Nothing
Set oFolder = Nothing
Set oFSO = Nothing
End Sub
' 删除文件夹
Sub DoDelFolder()
On Error Resume Next
Dim sFolderName, oFSO, sMapFolderName
Set oFSO = Server.CreateObject("Scripting.FileSystemObject")
sFolderName = Trim(Request("foldername"))
sMapFolderName = Server.Mappath(sCurrDir & sFolderName)
If oFSO.FolderExists(sMapFolderName) = True Then
oFSO.DeleteFolder(sMapFolderName)
End If
Set oFSO = Nothing
End Sub
' 检测服务器是否支持某一对象
Function IsObjInstalled(strClassString)
On Error Resume Next
IsObjInstalled = False
Err = 0
Dim xTestObj
Set xTestObj = Server.CreateObject(strClassString)
If 0 = Err Then IsObjInstalled = True
Set xTestObj = Nothing
Err = 0
End Function
' 按文件名取图
Function FileName2Pic(sFileName)
Dim sExt, sPicName
sExt = UCase(Mid(sFileName, InstrRev(sFileName, ".")+1))
Select Case sExt
Case "TXT"
sPicName = "txt.gif"
Case "CHM", "HLP"
sPicName = "hlp.gif"
Case "DOC"
sPicName = "doc.gif"
Case "PDF"
sPicName = "pdf.gif"
Case "MDB"
sPicName = "mdb.gif"
Case "GIF"
sPicName = "gif.gif"
Case "JPG"
sPicName = "jpg.gif"
Case "BMP"
sPicName = "bmp.gif"
Case "PNG"
sPicName = "pic.gif"
Case "ASP", "JSP", "JS", "php", "PHP3", "ASPX"
sPicName = "code.gif"
Case "HTM", "HTML", "SHTML"
sPicName = "htm.gif"
Case "ZIP"
sPicName = "zip.gif"
Case "RAR"
sPicName = "rar.gif"
Case "EXE"
sPicName = "exe.gif"
Case "AVI"
sPicName = "avi.gif"
Case "MPG", "MPEG", "ASF"
sPicName = "mp.gif"
Case "RA", "RM"
sPicName = "rm.gif"
Case "MP3"
sPicName = "mp3.gif"
Case "MID", "MIDI"
sPicName = "mid.gif"
Case "WAV"
sPicName = "audio.gif"
Case "XLS"
sPicName = "xls.gif"
Case "PPT", "PPS"
sPicName = "ppt.gif"
Case "SWF"
sPicName = "swf.gif"
Case Else
sPicName = "unknow.gif"
End Select
FileName2Pic = "<img border=0 src='sysimage/file/" & sPicName & "'>"
End Function
' ===============================================
' 初始化下拉框
' v_InitValue : 初始值
' s_Sql : 从数据库中取值时,select name,value from table
' s_AllName : 空值的名称,如:"全部","所有","默认"
' ===============================================
Function InitSelect(v_InitValue, s_Sql, s_AllName)
Dim i
InitSelect = ""
If s_AllName <> "" Then
InitSelect = InitSelect & "<option value=''>" & s_AllName & "</option>"
End If
oRs.Open s_Sql, oConn, 0, 1
Do While Not oRs.Eof
InitSelect = InitSelect & "<option value=""" & inHTML(oRs(1)) & """"
If CStr(oRs(1)) = CStr(v_InitValue) Then
InitSelect = InitSelect & " selected"
End If
InitSelect = InitSelect & ">" & outHTML(oRs(0)) & "</option>"
oRs.MoveNext
Loop
oRs.Close
End Function
' ===============================================
' 初始化传入参数
' ===============================================
Function InitParam()
sStyleID = Trim(Request("id"))
sUploadDir = ""
If IsNumeric(sStyleID) = True Then
sSql = "select S_UploadDir from eWebEditor_Style where S_ID=" & sStyleID
oRs.Open sSql, oConn, 0, 1
If Not oRs.Eof Then
sUploadDir = oRs(0)
End If
oRs.Close
End If
If sUploadDir = "" Then
sStyleID = ""
Else
sUploadDir = Replace(sUploadDir, "\", "/")
If Right(sUploadDir, 1) <> "/" Then
sUploadDir = sUploadDir & "/"
End If
End If
sCurrDir = sUploadDir
' 样式下的目录
sDir = Trim(Request("dir"))
If sDir <> "" Then
If CheckValidDir(Server.Mappath(sUploadDir & sDir)) = True Then
sCurrDir = sUploadDir & sDir & "/"
Else
sDir = ""
End If
End If
End Function
' ===============================================
' 检测目录的有效性
' ===============================================
Function CheckValidDir(s_Dir)
Dim oFSO
Set oFSO = Server.CreateObject("Scripting.FileSystemObject")
CheckValidDir = oFSO.FolderExists(s_Dir)
Set oFSO = Nothing
End Function
%>
</td></tr></table>
B. asp做上传下载
asp 又组建上传 很方便
首先把上传的文件肯定要放在服务器上
并将上传文件的地址记录在数据库中,你要想让别人下载,肯定要有个下载列表页,此页查询数据库,从数据库中查到下载地址,然后输出出来,别人一点就能下载了 ....不知道你说的是不是这个意思 ...这么做肯定没问题 因为我做过的简单项目都是这么做的
C. asp.net C# b/s 系统 怎么实现文件的上传下载。
点击上传按钮:
protected void btnupload_Click(object sender, EventArgs e)
{
string file = uploadfile.SaveFile(uploadpic, upleixing,"uploadpic");
if (UpType.ToLower() == "one")
{
Response.Write("<script>parent.document.form1." + htmControl + ".value='" + file + "';</script>");
}
else
{
Response.Write("<script>if(parent.document.form1." + htmControl + ".value==''){parent.document.form1." + htmControl + ".value='" + file + "';}else{parent.document.form1." + htmControl + ".value+='|" + file + "';}</script>");
}
}
类
uploadfile.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
/// <summary>
/// uploadfile 的摘要说明
/// </summary>
public class uploadfile
{
public uploadfile()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
/// <summary>
/// 判断文件路径是否存在;
/// 返回创建点日期文件夹路径
/// </summary>
/// <returns></returns>
public static string createFolder()
{
string rtpaht = "";
DateTime datenow = DateTime.Now;
string year = datenow.Year.ToString();
string month = datenow.Month.ToString();
string date = datenow.Day.ToString();
if (Directory.Exists(HttpContext.Current.Server.MapPath("~/uploadpic/" + year + "/" + month + "/" + date + "")) == false)
{
Directory.CreateDirectory(HttpContext.Current.Server.MapPath("~/uploadpic/" + year + "/" + month + "/" + date + ""));
}
rtpaht = "" + year + "/" + month + "/" + date + "";
return rtpaht;
}
/// <summary>
/// 保存文件,返回带日期文件夹的路径。
/// </summary>
/// <param name="file"></param>
/// <param name="type"></param>
/// <returns></returns>
public static string SaveFile(FileUpload file,string type)
{
return SaveFile(file, type, "uploadpic");
}
/// <summary>
/// 保存文件
/// </summary>
/// <param name="file"></param>
/// <param name="type"></param>
/// <param name="SaveFoder"></param>
/// <returns></returns>
public static string SaveFile(FileUpload file, string type,string SaveFoder)
{
if (type.IndexOf("asp") >= 0 || type.IndexOf("php") >= 0 || type.IndexOf("aspx") >= 0 || type.IndexOf("jsp") >= 0 || type.IndexOf("exe") >= 0)
{
HttpContext.Current.Response.End();
}
string filename = file.PostedFile.FileName;
if (file.HasFile)
{
string savepath1 = createFolder();
string savepath = "";
if (SaveFoder == "")
{
savepath = HttpContext.Current.Server.MapPath("~/"+SaveFoder+"/" + savepath1);
if (Directory.Exists(savepath) == false)
{
Directory.CreateDirectory(savepath);
}
}
else
{
savepath = HttpContext.Current.Server.MapPath("~/" + SaveFoder + "/" + savepath1);
if (Directory.Exists(savepath) == false)
{
Directory.CreateDirectory(savepath);
}
}
string filename2 = DateTime.Now.ToString().Replace("-", "").Replace(":", "").Replace(" ", "") + "." + GetFileExtends(filename, type);
file.SaveAs(savepath + "/" + filename2);
return savepath1 + "/" + filename2;
}
else
{
// HttpContext.Current.Response.Write(CommdClass.ResponseScript("请选择上传的文件!", "-1"));
return "nofile.jpg";
}
}
/// <summary>
///
/// </summary>
/// <param name="filename"></param>
/// <param name="filetype">文件类型(gif,jpg,bmp)</param>
/// <returns></returns>
public static string GetFileExtends(string filename,string filetype)
{
string ext = null;
if (filename.IndexOf('.') > 0)
{
string[] fs = filename.Split('.');
ext = fs[fs.Length - 1];
}
if (filetype.IndexOf(ext.ToLower()) < 0)
{
HttpContext.Current.Response.Write(ext + "<br>" + filetype);
HttpContext.Current.Response.Write(CommdClass.ResponseScript("文件格式错误,只允许上传" + filetype + "格式文件。", "0"));
return"";
}
return ext;
}
}
D. asp中怎么实现文件的上传
单用file控件是不能实现上传文件的。网上有很多无组件上传的资料,例如无惧类,可以网络一下。
下载的时候,把你存放文件的路径传递过来,提供个连接一般就可以了,但如果是doc之类的文件,IE可能会自动调用相应的软件直接打开而不是下载。
E. asp建站如何实现上传和下载
最好是组件类上传下载,无组件的不太支持大文件和压缩类文件。
给你一个最简单的ASPUPLOAD(网上有下载的)组件上传代码。国内空间和服务器一般都支持ASPUPLOAD
只要你的网页form ACTION 到这个upload.asp 就上传了。先建一个upload目录
这个upload.asp 代码如下:
<%
Set Upload = Server.CreateObject("Persits.Upload") '重要的:驱动组件
HH_savepath=server.mappath("upload") '定义相对路径
Upload.Save(HH_savepath) '上传
%>
三句搞定,简单吧?哈哈
F. 求ASP.NET WEB项目文件夹上传下载解决方案
ASP.NET上传文件用FileUpLoad就可以,但是对文件夹的操作却不能用FileUpLoad来实现。
下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压。
ASP.NET页面设计:TextBox和Button按钮。
TextBox中需要自己受到输入文件夹的路径(包含文件夹),通过Button实现选择文件夹的问题还没有解决,暂时只能手动输入。
两种方法:生成rar和zip。
1.生成rar
using Microsoft.Win32;
using System.Diagnostics;
protected void Button1Click(object sender, EventArgs e)
{
RAR(@"E:95413594531GIS", "tmptest", @"E:95413594531");
}
///
///压缩文件
///
///需要压缩的文件夹或者单个文件
///生成压缩文件的文件名
///生成压缩文件保存路径
///
protected bool RAR(string DFilePath, string DRARName,string DRARPath)
{
String therar;
RegistryKey theReg;
Object theObj;
String theInfo;
ProcessStartInfo theStartInfo;
Process theProcess;
try
{
theReg = Registry.ClassesRoot.OpenSubKey(@"ApplicationsWinRAR.exeShellOpenCommand"); //注:未在注册表的根路径找到此路径
theObj = theReg.GetValue("");
therar = theObj.ToString();
theReg.Close();
therar = therar.Substring(1, therar.Length - 7);
theInfo = " a" + " " + DRARName + "" + DFilePath +" -ep1"; //命令 + 压缩后文件名 + 被压缩的文件或者路径
theStartInfo = new ProcessStartInfo();
theStartInfo.FileName = therar;
theStartInfo.Arguments = theInfo;
theStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
theStartInfo.WorkingDirectory = DRARPath ; //RaR文件的存放目录。
theProcess = new Process();
theProcess.StartInfo = theStartInfo;
theProcess.Start();
theProcess.WaitForExit();
theProcess.Close();
return true;
}
catch (Exception ex)
{
return false;
}
}
///
///解压缩到指定文件夹
///
///压缩文件存在的目录
///压缩文件名称
///解压到文件夹
///
protected bool UnRAR(string RARFilePath,string RARFileName,string UnRARFilePath)
{
//解压缩
String therar;
RegistryKey theReg;
Object theObj;
String theInfo;
ProcessStartInfo theStartInfo;
Process theProcess;
try
{
theReg = Registry.ClassesRoot.OpenSubKey(@"ApplicationsWinRar.exeShellOpenCommand");
theObj = theReg.GetValue("");
therar = theObj.ToString();
theReg.Close();
therar = therar.Substring(1, therar.Length - 7);
theInfo = @" X " + " " + RARFilePath + RARFileName + " " + UnRARFilePath;
theStartInfo = new ProcessStartInfo();
theStartInfo.FileName = therar;
theStartInfo.Arguments = theInfo;
theStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
theProcess = new Process();
theProcess.StartInfo = theStartInfo;
theProcess.Start();
return true;
}
catch (Exception ex)
{
return false;
}
}
注:这种方法在在电脑注册表中未找到应有的路径,未实现,仅供参考。
2.生成zip
通过调用类库ICSharpCode.SharpZipLib.dll
该类库可以从网上下载。也可以从本链接下载:SharpZipLib_0860_Bin.zip
增加两个类:Zip.cs和UnZip.cs
(1)Zip.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.Collections;
using ICSharpCode.SharpZipLib.Checksums;
using ICSharpCode.SharpZipLib.Zip;
namespace UpLoad
{
/// <summary>
///功能:压缩文件
/// creator chaodongwang 2009-11-11
/// </summary>
public class Zip
{
/// <summary>
///压缩单个文件
/// </summary>
/// <param name="FileToZip">被压缩的文件名称(包含文件路径)</param>
/// <param name="ZipedFile">压缩后的文件名称(包含文件路径)</param>
/// <param name="CompressionLevel">压缩率0(无压缩)-9(压缩率最高)</param>
/// <param name="BlockSize">缓存大小</param>
public void ZipFile(string FileToZip, string ZipedFile, int CompressionLevel)
{
//如果文件没有找到,则报错
if (!System.IO.File.Exists(FileToZip))
{
throw new System.IO.FileNotFoundException("文件:" + FileToZip + "没有找到!");
}
if (ZipedFile == string.Empty)
{
ZipedFile = Path.GetFileNameWithoutExtension(FileToZip) + ".zip";
}
if (Path.GetExtension(ZipedFile) != ".zip")
{
ZipedFile = ZipedFile + ".zip";
}
////如果指定位置目录不存在,创建该目录
//string zipedDir = ZipedFile.Substring(0,ZipedFile.LastIndexOf("\"));
//if (!Directory.Exists(zipedDir))
//Directory.CreateDirectory(zipedDir);
//被压缩文件名称
string filename = FileToZip.Substring(FileToZip.LastIndexOf('\') + 1);
System.IO.FileStream StreamToZip = new System.IO.FileStream(FileToZip, System.IO.FileMode.Open, System.IO.FileAccess.Read);
System.IO.FileStream ZipFile = System.IO.File.Create(ZipedFile);
ZipOutputStream ZipStream = new ZipOutputStream(ZipFile);
ZipEntry ZipEntry = new ZipEntry(filename);
ZipStream.PutNextEntry(ZipEntry);
ZipStream.SetLevel(CompressionLevel);
byte[] buffer = new byte[2048];
System.Int32 size = StreamToZip.Read(buffer, 0, buffer.Length);
ZipStream.Write(buffer, 0, size);
try
{
while (size < StreamToZip.Length)
{
int sizeRead = StreamToZip.Read(buffer, 0, buffer.Length);
ZipStream.Write(buffer, 0, sizeRead);
size += sizeRead;
}
}
catch (System.Exception ex)
{
throw ex;
}
finally
{
ZipStream.Finish();
ZipStream.Close();
StreamToZip.Close();
}
}
/// <summary>
///压缩文件夹的方法
/// </summary>
public void ZipDir(string DirToZip, string ZipedFile, int CompressionLevel)
{
//压缩文件为空时默认与压缩文件夹同一级目录
if (ZipedFile == string.Empty)
{
ZipedFile = DirToZip.Substring(DirToZip.LastIndexOf("\") + 1);
ZipedFile = DirToZip.Substring(0, DirToZip.LastIndexOf("\")) +"\"+ ZipedFile+".zip";
}
if (Path.GetExtension(ZipedFile) != ".zip")
{
ZipedFile = ZipedFile + ".zip";
}
using (ZipOutputStream zipoutputstream = new ZipOutputStream(File.Create(ZipedFile)))
{
zipoutputstream.SetLevel(CompressionLevel);
Crc32 crc = new Crc32();
Hashtable fileList = getAllFies(DirToZip);
foreach (DictionaryEntry item in fileList)
{
FileStream fs = File.OpenRead(item.Key.ToString());
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
ZipEntry entry = new ZipEntry(item.Key.ToString().Substring(DirToZip.Length + 1));
entry.DateTime = (DateTime)item.Value;
entry.Size = fs.Length;
fs.Close();
crc.Reset();
crc.Update(buffer);
entry.Crc = crc.Value;
zipoutputstream.PutNextEntry(entry);
zipoutputstream.Write(buffer, 0, buffer.Length);
}
}
}
/// <summary>
///获取所有文件
/// </summary>
/// <returns></returns>
private Hashtable getAllFies(string dir)
{
Hashtable FilesList = new Hashtable();
DirectoryInfo fileDire = new DirectoryInfo(dir);
if (!fileDire.Exists)
{
throw new System.IO.FileNotFoundException("目录:" + fileDire.FullName + "没有找到!");
}
this.getAllDirFiles(fileDire, FilesList);
this.getAllDirsFiles(fileDire.GetDirectories(), FilesList);
return FilesList;
}
/// <summary>
///获取一个文件夹下的所有文件夹里的文件
/// </summary>
/// <param name="dirs"></param>
/// <param name="filesList"></param>
private void getAllDirsFiles(DirectoryInfo[] dirs, Hashtable filesList)
{
foreach (DirectoryInfo dir in dirs)
{
foreach (FileInfo file in dir.GetFiles("*.*"))
{
filesList.Add(file.FullName, file.LastWriteTime);
}
this.getAllDirsFiles(dir.GetDirectories(), filesList);
}
}
/// <summary>
///获取一个文件夹下的文件
/// </summary>
/// <param name="strDirName">目录名称</param>
/// <param name="filesList">文件列表HastTable</param>
private void getAllDirFiles(DirectoryInfo dir, Hashtable filesList)
{
foreach (FileInfo file in dir.GetFiles("*.*"))
{
filesList.Add(file.FullName, file.LastWriteTime);
}
}
}
}
(2)UnZip.cs
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
///解压文件
/// </summary>
using System;
using System.Text;
using System.Collections;
using System.IO;
using System.Diagnostics;
using System.Runtime.Serialization.Formatters.Binary;
using System.Data;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.Zip.Compression;
using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
namespace UpLoad
{
/// <summary>
///功能:解压文件
/// creator chaodongwang 2009-11-11
/// </summary>
public class UnZipClass
{
/// <summary>
///功能:解压zip格式的文件。
/// </summary>
/// <param name="zipFilePath">压缩文件路径</param>
/// <param name="unZipDir">解压文件存放路径,为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹</param>
/// <param name="err">出错信息</param>
/// <returns>解压是否成功</returns>
public void UnZip(string zipFilePath, string unZipDir)
{
if (zipFilePath == string.Empty)
{
throw new Exception("压缩文件不能为空!");
}
if (!File.Exists(zipFilePath))
{
throw new System.IO.FileNotFoundException("压缩文件不存在!");
}
//解压文件夹为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹
if (unZipDir == string.Empty)
unZipDir = zipFilePath.Replace(Path.GetFileName(zipFilePath), Path.GetFileNameWithoutExtension(zipFilePath));
if (!unZipDir.EndsWith("\"))
unZipDir += "\";
if (!Directory.Exists(unZipDir))
Directory.CreateDirectory(unZipDir);
using (ZipInputStream s = new ZipInputStream(File.OpenRead(zipFilePath)))
{
ZipEntry theEntry;
while ((theEntry = s.GetNextEntry()) != null)
{
string directoryName = Path.GetDirectoryName(theEntry.Name);
string fileName = Path.GetFileName(theEntry.Name);
if (directoryName.Length > 0)
{
Directory.CreateDirectory(unZipDir + directoryName);
}
if (!directoryName.EndsWith("\"))
directoryName += "\";
if (fileName != String.Empty)
{
using (FileStream streamWriter = File.Create(unZipDir + theEntry.Name))
{
int size = 2048;
byte[] data = new byte[2048];
while (true)
{
size = s.Read(data, 0, data.Length);
if (size > 0)
{
streamWriter.Write(data, 0, size);
}
else
{
break;
}
}
}
}
}
}
}
}
}
以上这两个类库可以直接在程序里新建类库,然后复制粘贴,直接调用即可。
主程序代码如下所示:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
using Microsoft.Win32;
using System.Diagnostics;
namespace UpLoad
{
public partial class UpLoadForm : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
if (TextBox1.Text == "") //如果输入为空,则弹出提示
{
this.Response.Write("<script>alert('输入为空,请重新输入!');window.opener.location.href=window.opener.location.href;</script>");
}
else
{
//压缩文件夹
string zipPath = TextBox1.Text.Trim(); //获取将要压缩的路径(包括文件夹)
string zipedPath = @"c: emp"; //压缩文件夹的路径(包括文件夹)
Zip Zc = new Zip();
Zc.ZipDir(zipPath, zipedPath, 6);
this.Response.Write("<script>alert('压缩成功!');window.opener.location.href=window.opener.location.href;</script>");
//解压文件夹
UnZipClass unZip = new UnZipClass();
unZip.UnZip(zipedPath+ ".zip", @"c: emp"); //要解压文件夹的路径(包括文件名)和解压路径(temp文件夹下的文件就是输入路径文件夹下的文件)
this.Response.Write("<script>alert('解压成功!');window.opener.location.href=window.opener.location.href;</script>");
}
}
}
}
本方法经过测试,均已实现。
另外,附上另外一种上传文件方法,经测试已实现,参考链接:http://blog.ncmem.com/wordpress/2019/11/20/net%e4%b8%8a%e4%bc%a0%e5%a4%a7%e6%96%87%e4%bb%b6%e7%9a%84%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88/
G. asp如何实现文件上传功能
基本原理是:采用ADO Stream对象的BinaryRead方法将FORM中的所有数据读出,从中截取出所需的文件数据,以二进制文件方式存盘。
下面是上传文件页面的一个例子:
<html>
<body>
<form name="Upload" Method="Post" Enctype="multipart/form-data" Action="Upload.asp">
<input type="file" name="FileName">
<INPUT TYPE="Submit" VALUE="Upload"></TD>
</form>
</body>
</html>
(7)asp实现上传下载扩展阅读
几种文件上传技术的比较
1、基于HTTP协议
该方法需要编程者利用第三方软件,如DELPHI、VB等,在应用程序中先进行HTTP协议编程,然后将待上传文件内容按HTTP协议的格式打包,最后向WEB服务器发送上传的请求报文,从而实现文件的上传。
因为DELPHI和VB不能编写完整的WEB网络程序,只能编写WEB小应用程序,因此,该方法只用于功能受限的网络应用。
2、基于VB(或DELPHI等)开发的文件上传组件
该方法利用VB(或DELPHI等编程语言)开发ASP服务器组件,实现特定的文件上传服务。它首先利用ASP表单功能将文件(二进制格式)从用户端上传到服务器端,然后使用VB开发的组件,对二进制文件进行处理,成为可以正常读写的文件。
该方法要求编程者不仅掌握ASP语言,而且还能利用VB等第三方语言进行组件编程,增加了开发的难度。
3、基于数据库技术
该方法和上个方法有类似之处。不同的地方在于对上传的二进制文件的处理上。它使用数据库来保存二进制文件。无论是小型数据库还是大型数据库都提供了存储二进制数据的数据类型,只要以Append Chunk方式将数据存入相应的字段就可以了。
该方法虽然简单可行,但是因为每次上传的文件大小都是不一样的,因此,会对数据库的空间造成很大的浪费,降低了数据的访问速度;并且使得文件只能在数据库环境下进行访问,造成了很大的不便。
H. Asp.net(c#)文件上传于下载
我这里有个上传的函数,下载的还没做过(新手,目前还没用到),你看看吧能不能用了。
public void Upload(string path, System.Web.UI.WebControls.FileUpload fileupload)
{
bool fileOK = false;
if (FileUpload1.HasFile)
{
string fileException = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
//获取指定路劲字符串的后缀名,并转化为小写
string[] allowExcption = { ".jpg", ".jpeg", ".bmp",".gif" };
//定义允许的后缀名
for (int i = 0; i < allowExcption.Length; i++)
{
if (fileException == allowExcption[i])
{
fileOK = true;
}
}
}
if (fileOK)
{
//判断文件是否存在,若不在则创建路径
if (System.IO.Directory.Exists(path))
{
//MessageBox.Show("该目录已经存在","信息提示");
}
else
{
System.IO.Directory.CreateDirectory(path);//创建文件路径
}
fileupload.SaveAs(path + "\" + fileupload.FileName);//上传文件
}
else
{
Response.Write("<Script>alert('不支持此格式文件上传')</Script>");
return;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
string serverpath = Server.MapPath("~/ImageFile");
string imapath = "~/ImageFile/" + FileUpload1.FileName;
Upload(serverpath, this.FileUpload1);
Image1.ImageUrl = imapath;
serverpath = Server.MapPath("~/ImageFile");
imapath = "~/ImageFile/" + FileUpload1.FileName;
Image1.ImageUrl = imapath;
Upload(serverpath, this.FileUpload1);
}
这部分是调用的(预览的功能),你要上传的话改成数据库操作就可以了,存放上传的路劲,文件的话她会自动生成文件夹放在里面的。
I. asp关于文件的上传和下载功能
先说明一下:
一、组件上传,在使用方法上,使用代码少,更安全,更容易控制,并且功能更强大,比如可以实现控制上传图片的尺寸,可以实现真实的上传进度条等,并且上传图片后可以进行对图片进行编辑等。但缺点是要求服务必需安装这个组件,如果是自己的服务器还好办,如果你是租用空间的话,那么最好放弃组件上传吧。
二、无组件上传,在使用上相对稍复杂一点,需要你到网上下载一个“ASP无组件上传类”(一般为一个.inc文件),不能对图片进行处理,只可以控制上传的文件类型,文件大小等,优点是对服务器无要求,租用的服务器空间绝大多数都可以使用。
综上所述,对于一般小站或企业网站,上传文件不多,文件不大,要求不高的都使用无组件上传。
目前较流行的 无组件上传类有:
化境ASP无组件上传类
风声ASP无组件上传类
艾恩ASP无组件上传类
等,你在网络里搜索以上关键字,找到官方网站,可以免费下载相关上传类,并且有详细用法说明,及例子。
J. 如何在asp网页中实现上传功能
我用的是艾恩无组件上传,文件上传到指定文件夹,名称以年月日时+随机命名,链接上传到数据库。另外也可以使用OLB上传,就是把文件以二进制形式存入数据库。