====================== End ===== 文件批量上传系统 .Net
文件批量上传系统 .Net
- 创建数据库 tabUploadFile
fileID int
NewFileName 新文件名 100
OldFileName 原来文件名 200
SaveAddress 保持的路径 200
UploadTime 上传时间 datetime -- getdate()
TypeName 文件类型 50
-- 创建Ch21工程
default.aspx
<div>
html-button, btnAttch,Value添加上传控件 AddFileControl
删除上传控件
<div id="dv1">
Asp:Button - btnUpload Text:上传
</div>
</div>
<script lanuage="javasript" >
function AddFileControl()
{
var innerDiv = document.createElement("div");
document.getElementById("dv1").appenChild(innerDiv);
var fileCtrol = documeng.createElement("input");
fileCtrol.name=
fileCtrol.type="file";
innerDiv.AppendChile(fileCtrol);
var btnCtorl = document.createElement("input");
btnCtrol.name=""
btnCtrol.type="button";
btnCtrol.setAttribute("value","删除");
btnCtrol.οnclick=function(){deleteFileCtrol(this.parentNote) };
innerDiv.appendChild(btnCtrol);
}
function DeleteFileCtrol(obj)
{
document.getElementByID("dv1").removeChild(obj);
}
</script>
-------------------
获得上传信息,显示上传的文件
--添加Web page -- uploadFileList.aspx
GridView -- grdFileList (ID) -- Columns --> 添加模板字段
TemplateField 模板字段 -- 文件名 新文件名,老文件名。
BoundField 绑定字段 DataField:uploadTime ==》 HeaderText 上传时间
BoundField 绑定字段 DataField:TypeName ==》 HeaderText 文件类型
去掉自动生成字段
点击html源文件
<asp:TemplateField HeaderText="文件名">
<ItemTemplate>
<asp:hyperlink Id="" runat="server" NavigaterUrl="<%# Eval("SaveAddress")%>" >
Hyperlinker
</asp:hyperlink>
<asp:hyperlink Id="" runat="server" NavigaterUrl="<%# GetFileUrl(Eval("SaveAddress").ToString(),Eval("NewFileName").ToString())%>" >
<%# Eval("oldFileName")%>
</asp:hyperlink>
</ItemTemplate>
</asp:TemplateField>
-- 后台
public string GetFileUrl(string strAddress,string strFileName)
{
return strAddress + strFileName;
}
==== 界面做好了
连接数据库,Web.Config
<add name="connStr" connectionString="Data Source=localhost;Initial Catalog=ch21DataBase;User Id=sa; Password=sa" />
-- 建立一个公共类
DataClass.cs
using System.Data.SqlClient;
using System.Web.Configuration;
private SqlConnecton GetConn()
{
SqlConnection conn;
string strConn = WebConfigurationManager.ConnectionStrings["connStr"].connectionString;
conn = new SqlConnection(strConn);
conn.open();
return conn;
}
private void CloseSqlServerConn(SqlConnection sqlConn)
{
if(sqlConn.State == SqlConnection.Open)
{
sqlConn.Close();
}
}
public bool SaveFilesInfo(HttpFileCollection fileColl)
{
sqlConnection sqlConn;
sqlCommand sqlcomm;
string strComm = @"insert into
tabUploadFile(A,B,C,D)
values(@NewFileName,@B,@C,@D);";
SqlTransacion sqlTran = Sqlconn.BeginTransaction(); //开始数据库事务
stringBuilder sdFileName;
try
{
sqlComm = new sqlCommand(sqlConn,sqlConn);
sqoComm.Transcation = sqlTran;
for(fileColl.count)
{
if(!String.IsNullOREmpty(fileColl[i].FileName))
{
stFileName = new stringBuilder();
sbFileName.Append(DateTime.Now.Year);
..
sbFileName.Append(DateTime.Now.Millisecond);
sbFileName.Append(Path.GetExtension(fileColl[i].fileName));
}
sqlComm.Parameters.Clear();
sqlComm.Parameters.AddWithValue("@A",sbFileName.ToString);
...
sqlComm.Parameters.AddWithValue("@D",sbFileName.ToString);
sqlComm.ExecuteNonQuery();
fileColl[i].SaveAs(Server.MapPath("~/upload")+sbFileName);
}
sqlTran.Commit(); // 提交事务
return true;
}
catch
{
sqlTran.Rollback();
CloseSqlServerConn(sqlConn);
return false;
}
}
--
public DataTable GetFilesInfo()
{
SqlConnection sqlconn;
SqlDataAdapter sqlAdpt;
DataTable dtFileInfo;
string strComm = "select * from tabUpload";
try
{
sqlConn = GetSqlServerConn();
sqlAdpt = New SqlDataAdapter(strComm,SqlConn);
dtFileInfo = new DataTable();
sqlAdpt.Fill(dtFileInfo);
return dtFilesInfo;
}
catch(Exception ex)
{
throw ex;
}
}
==========
Default.aspx
btnUpload_click
--
HttpFileCollection fileColl = Request.Files;
DataClass dc = new DataClass();
bool bResult = false;
try
{
bResult = dc.SaveFilesInfo(fileColl);
}
catch(Execption ex)
{
}
if(bResult)
{
//成功
}
else
{
//错误
}
---
模板列错误
---- 先删除,再智能添加,在转换为模板列,再调试。 别急
单引号,双引用引起的错误。 小心
---- 外面单引号,里面双引号
双击空白页写 Page_load
if(!this.IspostBack)
{
this.grdFileList.DataSource = new DataClass().GetFilesInfo();
this.grdFileList.DataBind();
}
-- 运行测试 ,查看数据库结果 和文件夹里的文件。
报告成功,但是没有任何结果
断点,F11, 进入方法中
<form id="form1" runat="server" enctype="multipart/form-data">
注意: 当设计上传控件时,要enctype="multipart/form-data"
datagrid
日期格式: DataFormatString -- {0:yyyy-MM-dd}
====================== End ===== 文件批量上传
============================================================
============ Begin =========== 投票系统
OWC11.Dll 做统计图用
C:/Program Files/Common Files/Microsoft Shared/Web Components/11/OWC11.DLL
VS 2008 , 新建ASP.net 网站, VoteSystem, 添加引用,路径如上所示
数据库设计
新建数据库 Ch16Database
------------
新建表 tabVoteResult
VoteId 主键 int ,自增
VoteContent 投票内容 varchar(10)
VoteCount 投票计数 int
-------------
1 拨号上网 100
2 宽带上网 101
3 无锡上网 200
4 手机上网 50
5 光纤上网 210
----------------- 数据库 OK
Default.aspx
lblTitle : 上网方式在线调查
radiobuttonList
LinkButton lbtnVote: 投票
LinkButton lbtnVoteResult:查看结果
----------------- 页面1 Ok
添加Web页面, VoteResult.aspx
Image : imgVoteResult
----------------- 页面2 Ok
=================================== 写代码
改写 web.config
<connectionStrings>
<add name="ch16Database" connectionString="Data Source=localhost;Initial Catalog=ch16Database;User Id=sa;Password=sa" />
<connectionStrings/>
写公共类,数据库操作方面
新增: DataClass.cs ,放入 App_Code文件夹中
using System.Data.SqlClient;
using System.Web.Configuration;
Private SqlConnection GetSqlConnection()
{
SqlConnection sqlConn;
string strConn = WebConfigurationManager.ConnectionStrings["ch16DataBase"].ConnectionString;
sqlConn = new Sqlconnection(str);
sqlConn.Open();
return sqlConn;
}
private void CloseSqlServerConn(SqlConnection sqlConn)
{
if(sqlConn.State == ConnectionState.Open)
{
sqlConn.Close();
}
}
public DataTable GetVoteContent()
{
SqlConnection sqlConn;
SqlDataAdapter sqlAdpt;
DataTable dtVoteResult;
string strComm = "select VoteId,voteContent from tabVoteResult";
try
{
sqlConn = GetSqlServerConn();
salAdpt = new SqlDataAdapter(strComm,sqlConn);
dtVoteResult = new DataTable();
sqlAdpt.Fill(dtVoteResult);
return dtVoteResult;
}
catch(Exception ex)
{
throw ex;
}
}
-- 到Default.aspx
using System.Data;
if(!this.IsPostBack)
{
try
{
DataClass dc = new DataClass();
DataTable dt = dc.GetVoteContent();
this.lisRbtnVoteContent.DataSource = dt;
this.lisRbtnVoteContent.DataValueField = "VoteId";
this.lisRbtnVoteContent.DataTextField = "VoteContent";
this.lisRbtnVoteContent.DataBind();
this.lisRbtVoteContent.SelectIndex = 0;
}
catch(Execption ex)
{
Response.Write(ex.Message)
}
}
----------
DataClass.cs 继续添加如下方法,投票事件
public bool SaveVoteResult(int voteId)
{
SqlConnection sqlConn;
SqlCommand sqlComm;
string strComm = @"update tabVoteResult set VoteCount=VoteCount+1 where voteId=@voteId";
sqlConn = GetSqlServerConn();
try
{
sqlComm = new SqlCommand(sqlComm,sqlConn);
sqlComm.Parameters.AddWithValue("@voteID",voteId);
sqlComm.ExecuteNonQuery();
return true;
}
catch(Execption ex)
{
CloseSqlServerConn(sqlConn);
return false;
}
}
---------
Default.aspx
点击投票时
DataClass dc = new DataClass();
bool bResult = dc.SaveVoteResult(int.Parse(this.lisRbtnVoteContent.SelectdItem.Values));
if(bResult)
{
Response.write("<script>alter('投票成功,谢谢您的参与')</script>");
}
else
{
Reponse.Write("<script>alter('投票失败,希望您再次参与');</script>");
}
--- 在浏览器中查看,看结果
查看数据库,验证结果
--- 继续完成 查看结果
DataClass.cs 添加入
public DataTable GetVoteResult()
{
SqlConnection sqlConn;
SqlDataAdapter sqlAdpt;
DataTable dtVoteResult;
string strComm = "select voteId,voteContent,VoteCount from tabVoteResult";
try
{
sqlConn = GetSqlServerConn();
sqlAdpt = new SqlDataAdapter(strComm,sqlConn);
dtVoteResult = new DataTable();
sqlAdpt.Fill(dtVoteResult);
return dtVoteResult;
}
catch(Execption ex)
{
throw ex;
}
}
--- 添加 VoteImageClass.cs 到App_Code中
using Microsoft.Office.Interop.Owc11;
public void ChartTypeColumn(DataTable dtVoteResult)
{//创建柱状图
//=== 略
}
--- 在VoteResult.aspx.cs
Server.Transfer("~/voteResult.aspx");
page_load
{
DataClass dc = new DataClass();
VoteImageClass vic = new VoteImageClass();
vic.ChartTypeColumn(dc.GetVoteResult);
imgVoteResult.ImageUrl = Server.MapPath("~/voteResultImage") + "/imgVote.jpg";
}
============ End =========== 投票系统