首页 新闻 搜索 专区 学院

如何实现在 Asp.net 网站中 上传文件到网站的某个文件夹下,并能提供下载已上传的文件的功能

0
悬赏园豆:50 [已解决问题] 解决于 2012-07-17 21:57

注:

1.上传的文件未规定格式,可以为.jpg图片格式,也可以为.xls格式等。要求能将选择的此文件上传到网站目录中的某个指定文件夹(如File文件夹)下。

2.上传成功后,在一个aspx页面上可以以列表方式显示File这个文件夹下的所有上传的文件。并能提供下载文件功能。

先谢谢园友们的热情帮助!

icyme的主页 icyme | 初学一级 | 园豆:77
提问于:2012-07-16 23:10
< >
分享
最佳答案
1

用asp.net服务器端控件FileUpload上传

前端:

<script type="text/javascript">
  function checkInput()
        {
           var file = document.getElementById("fuImage"); 
           var fileValue = file.value.substring(file.value.lastIndexOf("."));
           if(fileValue.toLowerCase() != ".jpg" && fileValue.toLowerCase() != ".gif" && fileValue.toLowerCase() != ".png")
           {
                alert("请上传有效图片格式文件,包括[jpg][gif][png]"); 
                return false;
           } 
        }
 </script> 

……

<form id="form1" runat="server">
<asp:FileUpload ID="fuImage" runat="server"  />
<asp:Button ID="btnSave" runat="server" Text="保存" OnClick="btnSave_Click" OnClientClick="return checkInput();" />
</form>

 后端cs代码:

 protected void btnSave_Click(object sender, EventArgs e)
 {
    //设置信息文本保存的文件名(文件名采用当前时间)
        string strDateTime = DateTime.Now.ToString("yyMMddHHMMss");
  //获取上传图片扩展名
        string extension = Path.GetExtension(fuImage.PostedFile.FileName);
        string imageName = strDateTime + extension; //设置上传图片名称
         //设置图片存放路径
        string strUpPath = Server.MapPath("~/file/") + imageName;
         try
        {
            fuImage.SaveAs(strUpPath);//上传图片
        }
        catch (Exception ex)
        {
            
        }
 }

文件下载:

//获取上传文件集合
string[] fileArray = Directory.GetFiles(Server.MapPath("~/file/"));
//然后随便用列表控件或是直接用循环输出html标签
……

//首先需要获取下载文件完整路径,使用url传递文件路径或是其他方式都可以
string filePath = Request.QueryString["downloadPath"];
//实现下载的方式很多,比如采用流方式下载
FileStream fs = new FileStream(filePath, FileMode.Open);
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment;    filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();

 希望以上能帮到你,方法很多,自己多想想,多尝试一下就会明白的。

 

收获园豆:30
psforever | 菜鸟二级 |园豆:461 | 2012-07-17 00:36

我参考了朋友的这种方法,也已经实现了小文件的上传于下载功能。十分感谢朋友的分享。

icyme | 园豆:77 (初学一级) | 2012-07-17 09:07
其他回答(4)
0

这个直接看MSDN帮助 FileUplod 控件例子,比看任何人给的事例都好!

收获园豆:5
水墨.MR.H | 园豆:280 (菜鸟二级) | 2012-07-17 03:59
0

这个应该是入门级别的,必备技能吧

Angkor--:-- | 园豆:1086 (小虾三级) | 2012-07-17 07:50
0

ASP.NET直接用FileUplod 控件

.NET MVC的话只有一个上传文件大小不能超过4M的upload控件,如果要做大文件上传的话请参考http://www.cnblogs.com/waw/archive/2011/09/01/2162773.html

收获园豆:5
CrazyJinn | 园豆:799 (小虾三级) | 2012-07-17 08:30

朋友说的对,FileUpload控制貌似默认只能上传小于4M的文件。我现在没用mvc技术,只是随便建了个解决方案练习。不过先收藏了,有时间再看,谢谢朋友的热情回答。

支持(0) 反对(0) icyme | 园豆:77 (初学一级) | 2012-07-17 09:09
0

http://www.cnblogs.com/mbailing/archive/2011/03/30/uploadify.html

这里面讲到了jquery uploadify 控件,我觉得这个非常不错。

至于你说到的下载吗,直接给个链接,链到你的资源上不就行了吗?

收获园豆:10
jerry-Tom | 园豆:4077 (老鸟四级) | 2012-07-17 10:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册