上传与下载问题

shashashu 2009-03-05 10:05:45
我用的Asp.net 2.0(C#),数据库是Oracle,现在想编写代码实现文件上传放到文件夹里路径存放在Oracle里,下载时直接到Oracle里读取路径,通过这个路径调用到相关的文件。
例如,实现视频文件的上传和在线播放?请问各位仁兄,我该怎么编写代码来实现?有好的就帮忙上传一段代码演示一下。
...全文
81 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
shashashu 2009-03-05
  • 打赏
  • 举报
回复
下载呢?视频文件该怎么显示在网页上?上传我已经实现了,上传到数据库里也可以了。
cppfaq 2009-03-05
  • 打赏
  • 举报
回复
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"> 
<INPUT type="submit" value="清空选择"></TD>
</TR>
</TABLE>
</FONT>
</TD>
</TR>
</TABLE>
</form>
</body>
</HTML>



后置代码:upload01.aspx

using 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));
//将文件名及相关信息存到数据库中

}
}
}


将文件上传到磁盘中,在表中将文件地址或路径记录下来,这样就可以在后面的程序来引用了。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧