一个烦琐的多文件上传的问题!急死我了~~~~
一个多文件上传的程序,老是出问题,但小弟技术低廉,所以一直解决不了,高手们帮帮我,,代码如下:
------------------------------- Aspx Page --------------------------------
<form id="form1" method="post" encType="multipart/form-data" runat="server">
<asp:panel id="Panel1" runat="server" Visible="False" Height="158px" Width="100%">
<P align="center">上传附件</P>
<TABLE class="f12" id="Table1" cellSpacing="0" borderColorDark="buttonhighlight" cellPadding="4" align="center" borderColorLight="buttontext" border="1">
<TR>
<TD><FONT color="#ffffff">请选择上传文件:</FONT></TD>
</TR><TR>
<TD align="middle">
<INPUT class="from" id="myFile" style="WIDTH: 238px; HEIGHT: 22px" type="file" maxLength="50" size="20" name="myFile" runat="server"></TD>
</TR>
<TR>
<TD><FONT color="#ffffff">已选择的上传文件列表:</FONT></TD>
</TR>
<TR>
<TD align="middle">
<INPUT class="from" id="Button1" type="button" value="添加到列表" name="Button1" runat="server">
<asp:dropdownlist id="files" runat="server" CssClass="SELECT"></asp:dropdownlist>
<INPUT class="from" id="Button2" type="button" value="移走文件" name="Button2" runat="server">
</TD>
</TR>
<TR>
<TD><FONT color="#ffffff">注意:上传文件大小限制在4M以下!</FONT></TD>
</TR>
<TR>
<TD align="middle">
<INPUT id="Button3" style="WIDTH: 440px; HEIGHT: 22px" type="button" value="上 传 全 部 文 件" name="Button3" runat="server"></TD>
</TR>
<TR id="shouone" runat="server">
<TD align="cneter" colSpan="2">
<TABLE class="f12" id="Table2" cellSpacing="0" cellPadding="0" width="100%" border="0">
<TR>
<TD align="middle" colSpan="2"><B><SPAN id="Span1" runat="server"></B></SPAN></TD>
<TR>
</TR>
<TR>
<TD>文件个数 :</TD>
<TD>
<asp:label id="fcount" runat="server" text=""></asp:label></TD>
</TR>
<TR>
<TD>文件名称 :</TD>
<TD>
<asp:label id="fname" runat="server" text=""></asp:label></TD>
</TR>
<TR>
<TD>文件类型 :</TD>
<TD>
<asp:label id="fenc" runat="server"></asp:label></TD>
</TR>
<TR>
<TD>文件大小 :(字节)</TD>
<TD>
<asp:label id="fsize" runat="server"></asp:label></TD>
</TR>
</TABLE>
</TD></TR>
</TABLE>
</asp:panel></form>
-------------------------------- CS Page ---------------------------------
private void Page_Load(object sender, System.EventArgs e)
{
TABLE1.Visible = false;
Panel1.Visible = true;
upfiles = new DataTable("upfile");
DataColumn[] keys = new DataColumn[1];
keys[0] = upfiles.Columns.Add("filename",typeof(string));
keys[0].AllowDBNull = false; // 列 keys[0] 是否允许为空值
keys[0].Unique = true; // 指示 列 keys[0] 的是否为唯一值
upfiles.PrimaryKey = keys;
upfiles.Columns.Add("fileSize",typeof(Int32));
upfiles.Columns.Add("filestream",typeof(byte[]));
upfiles.Columns.Add("fileExt",typeof(string));
upfiles.Columns.Add("regdate",typeof(string));
upfiles.Columns.Add("fileclass",typeof(string));
Span1.InnerHtml = "";
fcount.Text = "";
fname.Text = "";
fsize.Text = "";
}
private void Button3_ServerClick(object sender, System.EventArgs e)
{
DataClass dc = new DataClass();
fcount.Text = upfiles.Rows.Count.ToString();
if( upfiles.Rows.Count > 0 )
{
fname.Text = "";
fsize.Text = "";
for( int j = 0; j < upfiles.Rows.Count; j ++ )
{
DataRow dr = upfiles.Rows[j];
//获取一个递增的UpFileID值
string id = dc.SelectTableIndex("UpFile", "ID");
InsertRecordImg(id, (byte[])dr[2], (string)dr[0], (string)dr[3], (int)dr[1], (string)dr[4], (string)dr[5]);
}
Response.Redirect("admin/DataFrom.aspx?PID="+ Request.QueryString["PID"]+"&UpID="+Request.QueryString["UpID"]+"");
}
upfiles = null; // 清空对象内容
}
private void Button1_ServerClick(object sender, System.EventArgs e)
{
if( myFile.PostedFile != null || myFile.PostedFile.FileName != "" )
{
//定义一个视图
Stream imgStream;
DataClass dc = new DataClass();
string nam = myFile.PostedFile.FileName;
int i = nam.LastIndexOf("\\");
//获取文件名
string filename = nam.Substring(i+1) ;
if(upfiles.Rows.Find(filename)==null)
{
//--获取文件大小
int fileSize = myFile.PostedFile.ContentLength;
//--获取扩展名
string fileExt = myFile.PostedFile.ContentType;
//--创建日期
string regdate = dc.RegDate;
//上传的所属类型
string fileclass = "file";
//获取文件的内容
imgStream = myFile.PostedFile.InputStream;
byte[] imgBinaryData=new byte[fileSize];
int n = imgStream.Read(imgBinaryData, 0, fileSize);
DataRow dr = upfiles.NewRow();
dr[0] = filename; //设置为文件名
dr[1] = fileSize; //设置为文件大小
dr[2] = imgBinaryData; //设置为文件内容
dr[3] = fileExt; //设置为文件扩展名
dr[4] = regdate; //设置为文件创建日期
dr[5] = fileclass.Trim(); //设置为上传的所属类型
upfiles.Rows.Add( dr ); // 往数据表 upfiles 里面增加新行内容
// 将文件绑定到 DropDownList 上
ArrayList dc2 = new ArrayList();
for( int j = 0; j < upfiles.Rows.Count; j ++ )
{
DataRow df = upfiles.Rows[j];
dc2.Add( df[0].ToString() );
}
files.DataSource = dc2;
files.DataBind();
}
}
else
{
Span1.InnerHtml = "<font color='red'>请选择文件!</font>";
}
}
private void Button2_ServerClick(object sender, System.EventArgs e)
{
if( files.SelectedItem.Value != null || files.SelectedItem.Value != "" )
{
string fname=files.SelectedItem.Value;
DataRow foundRow= upfiles.Rows.Find(fname);
if(foundRow!=null)
upfiles.Rows.Remove(foundRow);
// 移除文件后,重新绑定 DropDownList
ArrayList dc=new ArrayList();
for(int j=0;j<upfiles.Rows.Count;j++)
{
DataRow df=upfiles.Rows[j];
dc.Add( df[0].ToString() );
}
files.DataSource=dc;
files.DataBind();
}
else
{
Span1.InnerHtml ="<font color=red>请选择文件!</font>";
}
}
#region ***** 上传到数据库 *****
public void InsertRecordImg(string id, byte[] image, string filenamev, string fileExt, int fileSize, string regdate, string fileclass)
{
using(SqlConnection Conn=new SqlConnection( ConfigurationSettings.AppSettings["strConn"] ))
{
if(Conn.State!=System.Data.ConnectionState.Open) Conn.Open();
SqlCommand Cmd = new SqlCommand();
Cmd.Connection=Conn;
Cmd.CommandText = " Insert into UpFile(id, FileData, FileName, FileExt, FileSize, Regdate, FileClass) Values(@id, @image, @filenamev, @fileExt, @fileSize, @regdate, @fileclass) ";
SqlParameter _id=new SqlParameter("@id",System.Data.SqlDbType.Int);
_id.Value=id;
Cmd.Parameters.Add(_id);
SqlParameter Image=new SqlParameter("@image",System.Data.SqlDbType.Image);
Image.Value=image;
Cmd.Parameters.Add(Image);
SqlParameter Filenamev =new SqlParameter("@filenamev",System.Data.SqlDbType.VarChar);
Filenamev.Value=filenamev;
Cmd.Parameters.Add(Filenamev);
SqlParameter FileExt =new SqlParameter("@fileExt",System.Data.SqlDbType.Char);
FileExt.Value=fileExt;
Cmd.Parameters.Add(FileExt);
SqlParameter FileSize =new SqlParameter("@fileSize",System.Data.SqlDbType.Int);
FileSize.Value=fileSize;
Cmd.Parameters.Add(FileSize);
SqlParameter _regdate =new SqlParameter("@regdate",System.Data.SqlDbType.DateTime);
_regdate.Value=regdate;
Cmd.Parameters.Add(_regdate);
SqlParameter _fileclass =new SqlParameter("@fileclass",System.Data.SqlDbType.Char);
_fileclass.Value=fileclass;
Cmd.Parameters.Add(_fileclass);
Cmd.ExecuteNonQuery();
}
}
#endregion
问题点数:80、回复次数:9Top
1 楼h520(影子)回复于 2003-06-03 14:05:52 得分 0
高手来帮我下三。Top
2 楼h520(影子)回复于 2003-06-03 14:14:28 得分 0
高人帮我下嘛。。。。。。。。。。。。Top
3 楼lionzhf(忆昔)回复于 2003-06-03 14:18:11 得分 80
你可以搜索一下的,以前有多文件上传Top
4 楼h520(影子)回复于 2003-06-03 14:21:37 得分 0
我知道想找到这个问题出在那儿。这样才可以提升自己嘛。Top
5 楼h520(影子)回复于 2003-06-03 14:22:53 得分 0
lionzhf(忆昔) 。。。你QQ,我加你,你怎么不让我进。。。
还有,老哥,你帮我调试一下上边的那代码到底那儿出的问题,好吗!Top
6 楼h520(影子)回复于 2003-06-03 14:47:47 得分 0
那位比较空闲的高手,帮我一下嘛。。!!!Top
7 楼namelb(是大海吗)回复于 2003-06-03 20:48:55 得分 0
首先用.net单步调试出错的行,如果是数据库错再打印出数据库的错就是了。Top
8 楼ilqtj(飞天)回复于 2003-06-03 20:55:27 得分 0
http://expert.csdn.net/Expert/topic/1807/1807751.xml?temp=.9315302
存储过程
CREATE PROCEDURE Teacher_Insert
(@name char(30),
@password char(30),
@gender char(2),
@birthday datetime,
@headship varchar(100),
@departmentname nvarchar(5),
@picture image,
@instruction text,
@task text ,
@workplace char(50) ,
@telephone char(20),
@email char(30),
@taskpic1 image,
@taskpic2 image ,
@degree char(50),
@job char(50) ,
@other text,
@model bit
)
AS
/*作者: 吴福贵
时间: 2003-04-16
功能: 用于添加教师资料
参数:
@name char(30),
@gender char(2),
@birthday datetime,
@headship varchar(100),
@picture image,
@instruction text,
@pretask text ,
@taskdirection varchar(500) ,
@task text ,
@workplace char(50) ,
@telephone char(20),
@email char(30),
@books text,
@other text,
@model bit
返回值:
-001001: 用户名存在
-001002: 姓名为空
-001003:性别为空
-001004:添加:状态为空
-001005: 密码为空
1:添加文件夹或文件成功
*/
if @name =''
begin
return -001002
end
if @gender= ''
begin
/*返回性别为空错误代码*/
return -001003
end
if @model is null
begin
/*返回状态为空错误代码*/
return @model /*-001003*/
end
if @password is null
begin
/*返回状态为空错误代码*/
return -001005
end
if exists(select * from Teacher where name=@name )
begin
/* 返回用户名存在错误代码 */
return -001001
end
insert Teacher (name,password,gender,birthday,headship,departmentname,picture,instruction,task,workplace,
telephone,email,taskpic1,taskpic2,degree,job,other)
values(@name,@password,@gender,@birthday,@headship,@departmentname,@picture,@instruction,@task,@workplace,
@telephone,@email,@taskpic1,@taskpic2,@degree,@job ,@other)
return 1;
GO
你把那个存储过程类添加到你的工程里剩下的很简单了Top
9 楼ljj77(小妖)回复于 2003-06-03 21:20:16 得分 0
可以用try,catch测一下,把错误打出来,或者用单步调试...Top



