请问asp.net如何实现文件上传和下载功能,最好提供详细的源码,谢谢了
3个回答
展开全部
aspx 代码
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>无标题页</title>
</head>
<body>
<formid="form1"runat="server">
<div>
<asp:FileUploadID="FileUpLoad1"runat="server"/>
<br/>
<asp:ButtonID="btnFileUpload"runat="server"
OnClick="btnFileUpload_Click"Text="文件上传"
OnClientClick="return checkType()"/>
<asp:LabelID="lblMessage"runat="server"></asp:Label>
</div>
</form>
</body>
</html>
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;i<allowed.length;i++){
if(!(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 = "尚未选择文件!";
}
}
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>无标题页</title>
</head>
<body>
<formid="form1"runat="server">
<div>
<asp:FileUploadID="FileUpLoad1"runat="server"/>
<br/>
<asp:ButtonID="btnFileUpload"runat="server"
OnClick="btnFileUpload_Click"Text="文件上传"
OnClientClick="return checkType()"/>
<asp:LabelID="lblMessage"runat="server"></asp:Label>
</div>
</form>
</body>
</html>
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;i<allowed.length;i++){
if(!(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 = "尚未选择文件!";
}
}
展开全部
上传: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();
}
下载:
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();
}
追问
可以再详细点吗?最好有个具体的例子
追答
这个还不详细啊
HttpPostedFile postFile = Upload.PostedFile;//Upload上传的控件
postFile.SaveAs(MapPath("路径"));//文件保存路径
下载调用方法就行了啊 传过路径过来就行
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
推荐是正解 其实用ASP.NET的服务器控件 FileUpload 很容易就可以实现一个上传附件的功能,从百度文库就可以下载到使用方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |