请问asp.net如何实现文件上传和下载功能,最好提供详细的源码,谢谢了

2024-12-19 13:05:32
推荐回答(3个)
回答1:

aspx 代码



无标题页







OnClick="btnFileUpload_Click"Text="文件上传"
OnClientClick="return checkType()"/>






js代码
function checkType(){
//得到上传文件的值
var fileName=document.getElementById("FileUpLoad1").value;
//返回String对象中子字符串最后出现的位置.
var seat=fileName.lastIndexOf(".");
//返回位于String对象中指定位置的子字符串并转换为小写.
var extension=fileName.substring(seat).toLowerCase();
//判断允许上传的文件格式
//if(extension!=".jpg"&&extension!=".jpeg"&&extension!=".gif"&&extension!=".png"&&extension!=".bmp"){
//alert("不支持"+extension+"文件的上传!");
//return false;
//}else{
//return true;
//}
var allowed=[".jpg",".gif",".png",".bmp",".jpeg"];
for(var i=0;iif(!(allowed[i]!=extension)){
returntrue;
}
}
alert("不支持"+extension+"格式");
returnfalse;
}

cs代码
//文件上传按钮click事件
protectedvoid btnFileUpload_Click(object sender, EventArgs e)
{
if (FileUpLoad1.HasFile)
{
//判断文件是否小于10Mb
if (FileUpLoad1.PostedFile.ContentLength < 10485760)
{
try
{
//上传文件并指定上传目录的路径
FileUpLoad1.PostedFile.SaveAs(Server.MapPath("~/Files/")
+ FileUpLoad1.FileName);
/*注意->这里为什么不是:FileUpLoad1.PostedFile.FileName
* 而是:FileUpLoad1.FileName?
* 前者是获得客户端完整限定(客户端完整路径)名称
* 后者FileUpLoad1.FileName只获得文件名.
*/
//当然上传语句也可以这样写(貌似废话):
//FileUpLoad1.SaveAs(@"D:\"+FileUpLoad1.FileName);
lblMessage.Text = "上传成功!";
}
catch (Exception ex)
{
lblMessage.Text = "出现异常,无法上传!";
//lblMessage.Text += ex.Message;
}
}
else
{
lblMessage.Text = "上传文件不能大于10MB!";
}
}
else
{
lblMessage.Text = "尚未选择文件!";
}
}

回答2:

上传:HttpPostedFile postFile = Upload.PostedFile;postFile.SaveAs(MapPath("路径"));
下载:
public static void DownLoadFile(string path)
{
path = HttpContext.Current.Server.MapPath(path);
System.IO.FileInfo file = new System.IO.FileInfo(path);
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(file.Name));
HttpContext.Current.Response.AddHeader("Content-Length", file.Length.ToString());
HttpContext.Current.Response.ContentType = "application/octet-stream";
HttpContext.Current.Response.WriteFile(file.FullName);
HttpContext.Current.Response.End();
}

回答3:

推荐是正解 其实用ASP.NET的服务器控件 FileUpload 很容易就可以实现一个上传附件的功能,从百度文库就可以下载到使用方法