zoukankan      html  css  js  c++  java
  • 上传文件

    /*上传文件C#-1*/
    file.PostedFile.SaveAs(Server.MapPath("/temp/") + file.PostedFile.FileName.Substring(file.PostedFile.FileName.LastIndexOf("\\")+1));

    /*上传文件C#-2*/
    using System;
    using System.Data;
    using System.Data.SqlClient;
    using CA.Components;        //全部在组件名称空间下

    namespace CA.Components
    {
        /// <summary>
        /// General 的摘要说明。
        /// 发布日期:2002-8-8 原作者:雷神
        /// 此程序属模式小组 HTTP://WWW.AI361.COM/PROJECT/
        /// 在sql2000,WIN2000s+.net+iis5中测试通过
        /// </summary>
        public class General
        {
            private string FilePath; //文件路径

            //定义一个枚举用来存放文件的信息       
            public enum File
            {
                FILE_SIZE ,        //大小
                FILE_POSTNAME,    //
                FILE_SYSNAME ,
                FILE_ORGINNAME,
                FILE_PATH
            };
            //构造函数
            public general()
            {
                //在WEB.CONFIG中设定AppSettings["filepath"],用于存放文件的路径。
                FilePath = System.Configuration.ConfigurationSettings.AppSettings["filepath"];
            }

            /// <summary>
            /// 上传文件通用函数,此方法为静态,系统任何时候均可调用。
            /// </summary>
            /// <param name="file">参数为页面的FILE控件对象</param>
            /// <returns></returns>
            public static string[] UploadFile(HtmlInputFile file)
            {
                string[] arr = new String[5];
                //通过系统时间生成文件名,此功能可以封闭掉,不过中文长文件名支持的不好。
                string FileName = DateTime.Now.ToString().Replace(" ","").Replace(":","").Replace("-","");
                string FileOrginName = file.PostedFile.FileName.Substring(file.PostedFile.FileName.LastIndexOf("\\")+1);
                if(file.PostedFile.ContentLength<=0)
                    return null;
                string  postFileName;
                string path = new general().FilePath+"\\";
                try
                {
                    int pos = file.PostedFile.FileName.LastIndexOf(".")+1;
                    postFileName = file.PostedFile.FileName.Substring(pos,file.PostedFile.FileName.Length-pos);
                    file.PostedFile.SaveAs(path+FileName+"."+postFileName);
                }
                catch(Exception exec)
                {
                    throw(exec);
                }
     
                double unit = 1024;
                double size =  Math.Round(file.PostedFile.ContentLength/unit,2);
                arr[(int)File.FILE_SIZE] = size.ToString();//文件大小
                arr[(int)File.FILE_POSTNAME] = postFileName;//文件类型(文件后缀名)
                arr[(int)File.FILE_SYSNAME] = FileName;//文件系统名
                arr[(int)File.FILE_ORGINNAME] = FileOrginName;//文件原来的名字
                arr[(int)File.FILE_PATH]=path+FileName+"."+postFileName;//文件路径
                return arr;
                //throw(new Exception(HtmlUtility.HtmlEncode(IDNO.PostedFile.FileName)));
            }
          }
       }


    /*上传文件VB.net-2*/
    <%@ Import Namespace="System.IO" %>

    <html>
       <script language="VB" runat=server>

          Sub UploadBtn_Click(Sender as Object, E as EventArgs)

        TRY
             UploadFile.PostedFile.SaveAs(Server.MapPath(Path.GetFileName(UploadFile.PostedFile.FileName)))
       
        CATCH
        END TRY

          End Sub

       </script>

       <body>
          <form enctype="multipart/form-data" runat=server>
              <h3>

              Select File To Upload: <input id="UploadFile" type=file runat=server>
              <asp:button Text="Upload Me!" OnClick="UploadBtn_Click" runat=server/>

          </form>
       </body>
    </html>


    /*上传文件VB.net-1*/
    <%@ Import Namespace="System" %>
    <%@ Import Namespace="System.Web.HttpPostedFile" %>
    <%@ Import Namespace="System.Web.UI.HtmlControls.HtmlInputFile" %>
    <script language="VB" runat="server">
    Sub UpLoad(Src As Object, E As EventArgs)
         If UploadFile.PostedFile.ContentLength=0 then
           ShowUpLoadFile.innerText="上传失败或文件不存在!"
      Else
          '获取文件名
       dim Temp() as String=Split(UploadFile.PostedFile.FileName,"\")
       dim FileName as String=Temp(Temp.Length-1)
       '保存文件
      UploadFile.PostedFile.SaveAs(Server.MapPath(".") & "\Files\" & FileName)
       '显示上传结果
       ShowUpLoadFile.InnerHtml="文件上传成功!<br>上传文件名:" & FileName
         End If
    End Sub
    </script>
    <html>
    <body>
        <form runat="server" enctype="multipart/form-data">
           <input type="file" id="UploadFile" runat="server" size="50"><br>
           <asp:button runat="server" Text="立即上传" onClick="Upload" />
        </form>
     <hr><br>
     <span id="ShowUpLoadFile" runat="server"></span>
    </body>
    </html>
        把上面的代码保存成.aspx文件,然后在该文件所在目录下创建一个存放文件的新目录Files,运行,先感受一下效果,然后再继续看下面的讲解
        使用ASP.NET上传文件,需要用到.NET框架的两个类:HttpPostedFile和HtmlInputFile,这两个类所在的命名空间分别是System.Web.HttpPostedFile和System.Web.UI.HtmlControls.HtmlInputFile,所以我们要在文件开头先导入这两个命名空间,
        其中的PostedFile表示上传到服务器的文件,它包含几个常用的属性:
           ContentLength:文件大小;
           FileName     :上传文件的详细路径及文件名;
           ContentType  :上传文件的文件类型。
        字符分割函数Split是用来取得文件名的,因为通过PostedFile.FileName获得的是详细的路径及文件名。
       
       多文件上传
       所谓的多文件上传就是同时上传多个文件,这个跟单一文件上传大多是相同的,不同的是多文件上传是把所有文件作为一个文件集合一起上传到服务器的,我们需要的是把这个文件集合分解成一个个单一的文件,剩下的处理方法就跟单一文件上传一样了。
       首先你要知道要最多同时上传多少个文件,然后你就在form之间放多少个如下的HtmlInput控件:
        <input type="file" runat="server" size="50">
       注意:这里的HtmlInput控件控件是不需要设置ID的
       那怎么在上传到服务器的文件集合中取出一个个的文件呢?看下面的代码:
       dim i as integer
       For i=0 to Request.Files.Count-1
          ‘使用Request.Files()来逐个获取上传的文件
          dim myFile as HttpPostedFile=Request.Files(i)
          '这里的myFile就相当于上例中的PostedFile,可以用myFile.FileName获得文件名,etc
          '这里的处理代码就跟单一文件上传的一样了
       Next
       现在你已经掌握了ASP.NET文件上传技术了,只要灵活应用,美化上传界面,做出好的ASP.NET上传程序了也不是什么难事了。

    作者:thanks       微信:-       QQ:305380844
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    牛客IOI周赛17-提高组 卷积 生成函数 多项式求逆 数列通项公式
    6.3 省选模拟赛 Decompose 动态dp 树链剖分 set
    AtCoder Grand Contest 044 A Pay to Win 贪心
    5.29 省选模拟赛 树的染色 dp 最优性优化
    luogu P6097 子集卷积 FST FWT
    CF724C Ray Tracing 扩展欧几里得 平面展开
    5.30 省选模拟赛 方格操作 扫描线 特殊性质
    5.29 省选模拟赛 波波老师 SAM 线段树 单调队列 并查集
    Spring main方法中怎么调用Dao层和Service层的方法
    Bug -- WebService报错(两个类具有相同的 XML 类型名称 "{http://webService.com/}getPriceResponse"。请使用 @XmlType.name 和 @XmlType.namespace 为类分配不同的名称。)
  • 原文地址:https://www.cnblogs.com/thanks/p/5408.html
Copyright © 2011-2022 走看看