我用的Asp.net 2.0(C#),数据库是Oracle,现在想编写代码实现文件上传放到文件夹里路径存放在Oracle里,下载时直接到Oracle里读取路径,通过这个路径调用到相关的文件。
例如,实现视频文件的上传和在线播放?请问各位仁兄,我该怎么编写代码来实现?有好的就帮忙上传一段代码演示一下。

解决方案 »

  1.   

    http://blog.csdn.net/zuoyefeng_com/archive/2007/05/23/1623366.aspx ASP.NET上传文件面面观收藏
    一、上传到数据库。(sqlserver为例) 
    存储文件的数据库中的字段为jimage,类型为image。在代码中定义类型为byte[]的一个变量buf,在上传组件的PostFile中,从它的InputStream读出字节数组,将buf赋给数据字段jimage就可以了。 int len = this.File1.PostedFile.ContentLength; 
    byte[] buf = new byte[len]; 
      
    Stream i = this.File1.PostedFile.InputStream; 
    i.Read(buf,0,buf.Length); 
    news.jimage=buf; 
    //news为新闻类,jimage为它的图片属性,即对应表中的image 
    i.Close(); 显示图像:图片的显示也很简单,在Persister中注意一下:SqlDataReader reader=SqlHelper.ExecuteReader("select jimage from news");
     
    if( reader.Read() )
     {
     news.jimage=(byte[])reader["jimage"];
    }
    reader.Close();
    得到byte[]的内容,要显示也比较简单,在Page_Load()方法中加两句话即可:Response.ContentType="image/jpeg";
    Response.BinaryWrite(ti.content);
    这样就可以输出图像了,如果想对图像做一点调整,如旋转,转换格式、获得图片格式(是jpg 还是 gif),请参考下面代码:
     //同样,声明输出不是HTML而是image
     Response.ContentType="image/jpeg";
     
     //从byte[]得到一个image对象
     System.Drawing.Image bmap = Bitmap.FromStream(new MemoryStream(ti.content));
     //操作一下这个图像
      bmap.RotateFlip(RotateFlipType.Rotate180FlipY);
      //输出到页面上
     bmap.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);
    //释放image
    bmap.Dispose();要显示图片在某一个image控件上,可采用下法:要显示图片的位置放一个image控件然后将它的src指向这个页面就行了!
    例如:
    页面:ViewImage.aspx
    <%@Import Namespace="System.IO"%>
    <%@Import Namespace="System.Data"%>
    <%@Import Namespace="System.Data.SqlClient"%>
    <%@ Page Language="C#" Debug="True" %>
    <script runat="server">
    private void Page_Load(Object sender, System.EventArgs e)
    {
    string imgid =Request.QueryString["UserID"];
    string connstr="data source=(local);initial catalog=Test;integrated security=SSPI;persist security info=True;packet size=4096";
    string sql="SELECT IMGTITLE,imgdata, imgtype FROM ImageStore WHERE id = '"+ imgid  "'";
    SqlConnection connection = new SqlConnection(connstr);
    SqlCommand command = new SqlCommand(sql, connection);
    connection.Open();
    SqlDataReader dr = command.ExecuteReader();if(dr.Read())
    {
    Response.ContentType = dr["imgtype"].ToString();
    Response.BinaryWrite( (byte[]) dr["imgdata"] );
    Response.Write(dr["IMGTITLE"].ToString());
    }
    connection.Close();
    }
    </script>
    显示图片的页面上放一个image控件imgZYF 在后代码中写:
    imgZYF.ImageUrl =“ViewImage.aspx?UserID=" +userId
    二、上传到服务器的磁盘:   页面文件:upload01.aspx
    <%@ Page language="c#" Codebehind="upload01.aspx.cs" AutoEventWireup="false" Inherits="upload01.upload01" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
     <HEAD>
      <title>上传到磁盘</title> </HEAD>
     <body>
      <form id="Form1" method="post" runat="server">
       <TABLE height="300" cellSpacing="1" cellPadding="1" width="500" border="0" class="bigtable-bj"
        align="center">
        <TR>
         <TD><FONT face="宋体">
           <TABLE id="Table1" style="WIDTH: 384px; HEIGHT: 54px" cellSpacing="1" cellPadding="1" width="384"
            border="0" align="center">
            <TR>
             <TD>选择文件:</TD>
             <TD><INPUT type="file" id="myfile" runat="server"></TD>
            </TR>
            <TR>
             <TD style="HEIGHT: 21px">输入备注:</TD>
             <TD style="HEIGHT: 21px">
              <asp:TextBox id="TextBox1" runat="server"></asp:TextBox></TD>
            </TR>
            <TR>
             <TD></TD>
             <TD><INPUT type="button" value="上传文件" runat="server" id="Button1" name="Button1">&nbsp;
              <INPUT type="submit" value="清空选择"></TD>
            </TR>
           </TABLE>
          </FONT>
         </TD>
        </TR>
       </TABLE>
      </form>
     </body>
    </HTML>   后置代码:upload01.aspxusing System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls; 
    namespace upload01
    { public class upload01 : System.Web.UI.Page
     {
      protected System.Web.UI.HtmlControls.HtmlInputButton Button1;
      protected System.Web.UI.WebControls.TextBox TextBox1;
      protected System.Web.UI.HtmlControls.HtmlInputFile myfile;
     
      private void Page_Load(object sender, System.EventArgs e)
      {
       // 昨夜风 www.zuoyefeng.com
      }   private void Button1_ServerClick(object sender, System.EventArgs e)
      {
       //取得客户端路径及文件名
       string str=myfile.PostedFile.FileName;
       //取得文件类型,如.jpg
       string filename2=str.Substring(str.LastIndexOf(".")).ToString().Trim();
         // 取得文件大小,单位K
       double filesize=myfile.PostedFile.ContentLength/1024.00;
       //以时间刻度定义文件名
       string filename1=DateTime.Now.Ticks.ToString();
        myfile.PostedFile.SaveAs(Server.MapPath("/upload01/"+filename1+filename2));
       //将文件名及相关信息存到数据库中  }
     }
    }
       将文件上传到磁盘中,在表中将文件地址或路径记录下来,这样就可以在后面的程序来引用了。