最近有个涉及到邮件的活,需要把文件上传到数据库,然后再把文件从数据库里面读出来,进行下载。
找了一些资料之后运用到项目当中。
数据库的结构如下:
USE [EOffice]
GO
/****** 对象: Table [dbo].[Group_Files] 脚本日期: 07/20/2006 23:57:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Group_Files](
[ID] [int] IDENTITY(1,1) NOT NULL,
[FileName] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT [DF_Group_Files_FileName] DEFAULT (''),
[FileBody] [image] NULL,
[FileType] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT [DF_Group_Files_FileType] DEFAULT (''),
CONSTRAINT [PK_Group_Files] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING OFF
然后我写了一个存储过程,代码如下:
USE [EOffice]
GO
/****** 对象: StoredProcedure [dbo].[SendTo_Group_Email] 脚本日期: 07/20/2006 23:59:21 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO





Create PROCEDURE [dbo].[SendTo_Group_Email]
(
@Title varchar(200),
@Content varchar(MAX),
@Area varchar(max),
@Sender varchar(50),
@Dept varchar(50),
@SendToUser varchar(50),
@FileName varchar(200),
@FileBody image,
@FileType varchar(4)
)
AS
INSERT Group_Email (Title,[Content],Area,SendToUser,Dept,Sender,FileName,FileBody,FileType) VALUES (@Title,@Content,@Area,@SendToUser,@Dept,@Sender,@FileName,@FileBody,@FileType)



程序代码如下:
SendEmail.aspx
1
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SendEmail.aspx.cs" Inherits="GroupWork_SendEmail" %>
2
3
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5
<html xmlns="http://www.w3.org/1999/xhtml" >
6
7
<head runat="server">
8
<title>发送邮件</title>
9
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><style type="text/css">
10
body,td,th {
11
font-size: 9pt;
12
}
13
body {
14
background-image: url();
15
background-color: #F2F7FB;
16
margin-left: 10px;
17
margin-top: 5px;
18
margin-right: 10px;
19
margin-bottom: 5px;
20
}
21
-->
22
</style></head>
23
<script language="vbscript">
24
function Select_Local_User(url)
25
dim k
26
k=showModalDialog(url,"","dialogWidth:485px;status:no;dialogHeight:280px")
27
if ubound(split(k,"$#@&!"))>=0 then
28
document.form1.HiddenField1.value = split(k,"$#@&!")(0)
29
document.form1.txtLocalUser.value = split(k,"$#@&!")(1)
30
end if
31
end function
32
33
function Select_Remote_User(url)
34
dim k
35
k=showModalDialog(url,"","dialogWidth:485px;status:no;dialogHeight:310px")
36
if ubound(split(k,"$#@&!"))>=0 then
37
document.form1.HiddenField2.value = split(k,"$#@&!")(0)
38
document.form1.txtRemoteUser.value=split(k,"$#@&!")(1)
39
end if
40
end function
41
42
</script>
43
<body>
44
<form id="form1" method="post" enctype="multipart/form-data" runat="server">
45
<div style="text-align: center">
46
<table border="0" cellpadding="0" cellspacing="0" width="100%">
47
<tr>
48
<td width="1%"><img src="../Images/spacer.gif" width="11" height="1" border="0" alt="" /></td>
49
<td colspan="2"><img src="../Images/spacer.gif" width="209" height="1" border="0" alt="" /></td>
50
<td width="1%"><img src="../Images/spacer.gif" width="12" height="1" border="0" alt="" /></td>
51
<td width="2%"><img src="../Images/spacer.gif" width="1" height="1" border="0" alt="" /></td>
52
</tr>
53
<tr>
54
<td style="height: 35px"><img src="../Images/ye_r1_c1.gif" alt="" name="ye_r1_c1" width="11" height="30" border="0" id="ye_r1_c1" /></td>
55
<td colspan="2" align="left" background="../images/ye_r1_c2.gif" style="height: 35px"><table width="119" border="0" cellspacing="0" cellpadding="0">
56
<tr>
57
<td width="40" height="20"> </td>
58
<td width="79" valign="top"><strong>收 文 登 记</strong></td>
59
</tr>
60
</table></td>
61
<td style="height: 35px"><img src="../Images/ye_r1_c3.gif" alt="" name="ye_r1_c3" width="12" height="30" border="0" id="ye_r1_c3" /></td>
62
<td style="height: 35px"></td>
63
</tr>
64
<tr>
65
<td background="../images/ye_r2_c1.gif"> </td>
66
<td width="13%"> </td>
67
<td width="83%" align="left"><img src="../Images/dj.gif" width="300" height="30" /></td>
68
<td background="../images/ye_r2_c3.gif"> </td>
69
<td> </td>
70
</tr>
71
<tr>
72
<td background="../images/ye_r2_c1.gif"> </td>
73
<td colspan="2"><div align="center">
74
<table border="0" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC" style="width: 566px">
75
<tr bgcolor="#b9d5f4">
76
<td style="width: 186px; height: 20px">
77
<div align="center" class="style2"> 文件标题</div></td>
78
<td colspan="2" align="left" style="height: 20px; width: 433px;">
79
<asp:TextBox ID="txtTitle" runat="server" class="Input_TextBox" Width="277px"></asp:TextBox>
80
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtTitle"
81
Display="Dynamic" ErrorMessage="文件标题不能为空。"></asp:RequiredFieldValidator></td>
82
</tr>
83
<tr bgcolor="#F1F5FC">
84
<td style="width: 186px; height: 20px">
85
本地用户</td>
86
<td align="left" colspan="2" style="width: 433px; height: 20px">
87
<asp:TextBox ID="txtLocalUser" runat="server" Width="279px"></asp:TextBox><input
88
id="SelectLocal" class="Input_Button" name="SelectLocal" onClick="vbscript:Select_Local_User('..\SelectMulti.aspx')" type="button"
89
value="选择" /><asp:HiddenField ID="HiddenField1" runat="server" />
90
</td>
91
</tr>
92
<tr bgcolor="#b9d5f4">
93
<td style="width: 186px; height: 20px">
94
异地用户</td>
95
<td align="left" colspan="2" style="width: 433px; height: 20px">
96
<asp:TextBox ID="txtRemoteUser" runat="server" Width="279px"></asp:TextBox>
97
<input id="SelectRemote" class="Input_Button" name="SelectRemote" onClick="vbscript:Select_Remote_User('..\SelectRemoteUser.aspx')"
98
type="button" value="选择" />
99
<asp:HiddenField ID="HiddenField2" runat="server" />
100
</td>
101
</tr>
102
<tr bgcolor="#F1F5FC">
103
<td rowspan="2" align="center" style="width: 186px; height: 11px;"> 文件上传</td>
104
<td colspan="2" rowspan="2" align="left" valign="top" bgcolor="#F1F5FC" style="width: 433px; height: 11px;">
105
<input id="File1" runat="server" style="width: 381px" type="file" /><br />
106
<input id="File2" runat="server" style="width: 379px" type="file" />
107
<input id="File3" runat="server" style="width: 379px" type="file" />
108
<input id="File4" runat="server" style="width: 379px" type="file" />
109
<input id="File5" runat="server" style="width: 377px" type="file" /></td>
110
</tr>
111
<tr>
112
</tr>
113
<tr bgcolor="#B9D5F4">
114
<td style="width: 186px; height: 22px;">
115
<div align="center" class="style2"> 邮件内容</div></td>
116
<td colspan="2" align="left" style="width: 433px; height: 22px;">
117
<asp:TextBox ID="txtContent" runat="server" Height="57px" TextMode="MultiLine" Width="296px" class="Input_TextBox"></asp:TextBox>
118
<asp:RequiredFieldValidator ID="RequiredFieldValidator7" runat="server" ControlToValidate="txtContent"
119
Display="Dynamic" ErrorMessage="邮件内容不能为空。"></asp:RequiredFieldValidator></td>
120
</tr>
121
<tr bgcolor="#F1F5FC">
122
<td style="width: 186px; height: 6px">
123
</td>
124
<td colspan="2" align="left" style="height: 6px; width: 433px;">
125
<asp:CheckBox ID="chkSms" runat="server" Text="短信通知" />
126
<asp:Button ID="btnSubmit" runat="server" OnClick="btnSubmit_Click" Text="提交" class="Input_Button" />
127
<input type="reset" name="Submit" value="重置" class="Input_Button" /></td>
128
</tr>
129
</table>
130
</div></td>
131
<td background="../images/ye_r2_c3.gif"> </td>
132
<td> </td>
133
</tr>
134
<tr>
135
<td><img src="../Images/ye_r3_c1.gif" alt="" name="ye_r3_c1" width="11" height="22" border="0" id="ye_r3_c1" /></td>
136
<td colspan="2" background="../images/ye_r3_c2.gif"> </td>
137
<td><img src="../Images/ye_r3_c3.gif" alt="" name="ye_r3_c3" width="12" height="22" border="0" id="ye_r3_c3" /></td>
138
<td> </td>
139
</tr>
140
</table>
141
</div>
142
</form>
143
</body>
144
</html>
145
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SendEmail.aspx.cs" Inherits="GroupWork_SendEmail" %>2

3
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">4

5
<html xmlns="http://www.w3.org/1999/xhtml" >6

7
<head runat="server">8
<title>发送邮件</title>9
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><style type="text/css">10
body,td,th {11
font-size: 9pt;12
}13
body {14
background-image: url();15
background-color: #F2F7FB;16
margin-left: 10px;17
margin-top: 5px;18
margin-right: 10px;19
margin-bottom: 5px;20
}21
-->22
</style></head>23
<script language="vbscript">24
function Select_Local_User(url)25
dim k26
k=showModalDialog(url,"","dialogWidth:485px;status:no;dialogHeight:280px")27
if ubound(split(k,"$#@&!"))>=0 then28
document.form1.HiddenField1.value = split(k,"$#@&!")(0)29
document.form1.txtLocalUser.value = split(k,"$#@&!")(1)30
end if31
end function32

33
function Select_Remote_User(url)34
dim k35
k=showModalDialog(url,"","dialogWidth:485px;status:no;dialogHeight:310px")36
if ubound(split(k,"$#@&!"))>=0 then37
document.form1.HiddenField2.value = split(k,"$#@&!")(0)38
document.form1.txtRemoteUser.value=split(k,"$#@&!")(1)39
end if40
end function41

42
</script>43
<body>44
<form id="form1" method="post" enctype="multipart/form-data" runat="server">45
<div style="text-align: center"> 46
<table border="0" cellpadding="0" cellspacing="0" width="100%">47
<tr>48
<td width="1%"><img src="../Images/spacer.gif" width="11" height="1" border="0" alt="" /></td>49
<td colspan="2"><img src="../Images/spacer.gif" width="209" height="1" border="0" alt="" /></td>50
<td width="1%"><img src="../Images/spacer.gif" width="12" height="1" border="0" alt="" /></td>51
<td width="2%"><img src="../Images/spacer.gif" width="1" height="1" border="0" alt="" /></td>52
</tr>53
<tr>54
<td style="height: 35px"><img src="../Images/ye_r1_c1.gif" alt="" name="ye_r1_c1" width="11" height="30" border="0" id="ye_r1_c1" /></td>55
<td colspan="2" align="left" background="../images/ye_r1_c2.gif" style="height: 35px"><table width="119" border="0" cellspacing="0" cellpadding="0">56
<tr>57
<td width="40" height="20"> </td>58
<td width="79" valign="top"><strong>收 文 登 记</strong></td>59
</tr>60
</table></td>61
<td style="height: 35px"><img src="../Images/ye_r1_c3.gif" alt="" name="ye_r1_c3" width="12" height="30" border="0" id="ye_r1_c3" /></td>62
<td style="height: 35px"></td>63
</tr>64
<tr>65
<td background="../images/ye_r2_c1.gif"> </td>66
<td width="13%"> </td>67
<td width="83%" align="left"><img src="../Images/dj.gif" width="300" height="30" /></td>68
<td background="../images/ye_r2_c3.gif"> </td>69
<td> </td>70
</tr>71
<tr>72
<td background="../images/ye_r2_c1.gif"> </td>73
<td colspan="2"><div align="center">74
<table border="0" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC" style="width: 566px">75
<tr bgcolor="#b9d5f4">76
<td style="width: 186px; height: 20px">77
<div align="center" class="style2"> 文件标题</div></td>78
<td colspan="2" align="left" style="height: 20px; width: 433px;">79
<asp:TextBox ID="txtTitle" runat="server" class="Input_TextBox" Width="277px"></asp:TextBox>80
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtTitle"81
Display="Dynamic" ErrorMessage="文件标题不能为空。"></asp:RequiredFieldValidator></td>82
</tr>83
<tr bgcolor="#F1F5FC">84
<td style="width: 186px; height: 20px">85
本地用户</td>86
<td align="left" colspan="2" style="width: 433px; height: 20px">87
<asp:TextBox ID="txtLocalUser" runat="server" Width="279px"></asp:TextBox><input88
id="SelectLocal" class="Input_Button" name="SelectLocal" onClick="vbscript:Select_Local_User('..\SelectMulti.aspx')" type="button"89
value="选择" /><asp:HiddenField ID="HiddenField1" runat="server" />90
</td>91
</tr>92
<tr bgcolor="#b9d5f4">93
<td style="width: 186px; height: 20px">94
异地用户</td>95
<td align="left" colspan="2" style="width: 433px; height: 20px">96
<asp:TextBox ID="txtRemoteUser" runat="server" Width="279px"></asp:TextBox>97
<input id="SelectRemote" class="Input_Button" name="SelectRemote" onClick="vbscript:Select_Remote_User('..\SelectRemoteUser.aspx')" 98
type="button" value="选择" />99
<asp:HiddenField ID="HiddenField2" runat="server" />100
</td>101
</tr>102
<tr bgcolor="#F1F5FC">103
<td rowspan="2" align="center" style="width: 186px; height: 11px;"> 文件上传</td>104
<td colspan="2" rowspan="2" align="left" valign="top" bgcolor="#F1F5FC" style="width: 433px; height: 11px;"> 105
<input id="File1" runat="server" style="width: 381px" type="file" /><br />106
<input id="File2" runat="server" style="width: 379px" type="file" />107
<input id="File3" runat="server" style="width: 379px" type="file" />108
<input id="File4" runat="server" style="width: 379px" type="file" />109
<input id="File5" runat="server" style="width: 377px" type="file" /></td>110
</tr>111
<tr>112
</tr>113
<tr bgcolor="#B9D5F4">114
<td style="width: 186px; height: 22px;">115
<div align="center" class="style2"> 邮件内容</div></td>116
<td colspan="2" align="left" style="width: 433px; height: 22px;">117
<asp:TextBox ID="txtContent" runat="server" Height="57px" TextMode="MultiLine" Width="296px" class="Input_TextBox"></asp:TextBox>118
<asp:RequiredFieldValidator ID="RequiredFieldValidator7" runat="server" ControlToValidate="txtContent"119
Display="Dynamic" ErrorMessage="邮件内容不能为空。"></asp:RequiredFieldValidator></td>120
</tr>121
<tr bgcolor="#F1F5FC">122
<td style="width: 186px; height: 6px">123
</td>124
<td colspan="2" align="left" style="height: 6px; width: 433px;">125
<asp:CheckBox ID="chkSms" runat="server" Text="短信通知" /> 126
<asp:Button ID="btnSubmit" runat="server" OnClick="btnSubmit_Click" Text="提交" class="Input_Button" /> 127
<input type="reset" name="Submit" value="重置" class="Input_Button" /></td>128
</tr>129
</table>130
</div></td>131
<td background="../images/ye_r2_c3.gif"> </td>132
<td> </td>133
</tr>134
<tr>135
<td><img src="../Images/ye_r3_c1.gif" alt="" name="ye_r3_c1" width="11" height="22" border="0" id="ye_r3_c1" /></td>136
<td colspan="2" background="../images/ye_r3_c2.gif"> </td>137
<td><img src="../Images/ye_r3_c3.gif" alt="" name="ye_r3_c3" width="12" height="22" border="0" id="ye_r3_c3" /></td>138
<td> </td>139
</tr>140
</table>141
</div>142
</form>143
</body>144
</html>145

SendEmail.aspx.cs
1
using System;
2
using System.Data;
3
using System.Configuration;
4
using System.Collections;
5
using System.Web;
6
using System.Web.Security;
7
using System.Web.UI;
8
using System.Web.UI.WebControls;
9
using System.Web.UI.WebControls.WebParts;
10
using System.Web.UI.HtmlControls;
11
12
using System.Data;
13
using System.Data.SqlClient;
14
using EOffice.Model;
15
using EOffice.SqlServer;
16
using System.IO;
17
using System.Configuration;
18
19
//using iWebSMS2000;
20
[Serializable]
21
public partial class GroupWork_SendEmail : System.Web.UI.Page
22
{
23
public SqlConnection conn;
24
//public iSMS2000 SMS;
25
//public DBstep.SMSClient2000 ObjiSMSClient2000;
26
protected void Page_Load(object sender, EventArgs e)
27
{
28
conn = new SqlConnection("SERVER=SERVER;UID=sa;PWD=8860;database=EOFFICE_SERVER;");
29
30
}
31
protected void btnSubmit_Click(object sender, EventArgs e)
32
{
33
String strTitle = txtTitle.Text;
34
String strContent = txtContent.Text;
35
UserInfo info = (UserInfo)Session["EOfficeUserInfo"];
36
String strUserName = info.UserName;
37
String strTmpDept = info.DeptId.ToString();
38
39
String strUnitName = ConfigurationSettings.AppSettings["UnitName"];
40
String strServerFileIndex = ""; //服务器端文件附件索引
41
String strClientFileIndex = ""; //客户端文件附件索引
42
43
String strRemote = HiddenField2.Value;
44
String[] strRemoteUser = strRemote.Split(',');
45
String strTmpUserName;
46
String strTmpServer;
47
Boolean bDone = false;
48
49
////////上传多附件代码/////////////
50
//得到File表单元素
51
HttpFileCollection files = HttpContext.Current.Request.Files;
52
HttpPostedFile postedFile;
53
54
foreach (string strUser in strRemoteUser)
55
{
56
String[] strSplit = strUser.Split('/');
57
strTmpUserName = strSplit[0];
58
strTmpServer = strSplit[1];
59
String strConnectString = "";
60
String strAreaName = "";
61
int nAreaID = 0;
62
String strDept = "";
63
strClientFileIndex = "";
64
SqlConnection connClient;
65
66
String strSQL = "Select * From Area Where AreaCode='" + strTmpServer + "'";
67
SqlCommand cmd = new SqlCommand(strSQL, conn);
68
cmd.Connection.Open();
69
using (SqlDataReader sdr = cmd.ExecuteReader())
70
{
71
if (sdr.Read())
72
{
73
strConnectString = sdr["ConnectString"].ToString();
74
strAreaName = sdr["AreaName"].ToString();
75
nAreaID = Convert.ToInt16(sdr["ID"]);
76
}
77
}
78
cmd.Connection.Close();
79
80
strSQL = "Select * From MemberList Where UserName='" + strTmpUserName + "' And AreaID=" + nAreaID;
81
cmd = new SqlCommand(strSQL, conn);
82
cmd.Connection.Open();
83
using (SqlDataReader sdr = cmd.ExecuteReader())
84
{
85
if (sdr.Read())
86
{
87
strDept = sdr["Dept"].ToString();
88
}
89
}
90
cmd.Connection.Close();
91
92
connClient = new SqlConnection(strConnectString);
93
94
for (int intCount = 0; intCount < files.Count; intCount++)
95
{
96
postedFile = files[intCount];
97
98
if (postedFile.ContentLength > 0)
99
{
100
String strOldFilePath = postedFile.FileName;
101
String strFileName = strOldFilePath.Substring(strOldFilePath.LastIndexOf("\\") + 1);
102
103
//上传文件到服务器
104
//File1.PostedFile.SaveAs("c:\\Test\\" + DateTime.Now.ToString("yyyyMMddhhmmss") + strExtension);
105
106
//用于保存文件大小
107
int intDocLen;
108
//Stream用于读取上传数据
109
Stream objStream;
110
String strDocExt;
111
//上传文件具体内容
112
intDocLen = postedFile.ContentLength;
113
strDocExt = strOldFilePath.Substring(strOldFilePath.LastIndexOf(".") + 1);
114
115
byte[] Docbuffer = new byte[intDocLen];
116
objStream = postedFile.InputStream;
117
118
119
//文件保存到缓存
120
121
//缓存将保存到数据库
122
objStream.Read(Docbuffer, 0, intDocLen);
123
124
string fileType = postedFile.ContentType;
125
126
127
//执行服务器端存储过程Send_Group_Email
128
if (!bDone)
129
{
130
cmd = new SqlCommand("Send_Group_Email", conn);
131
cmd.CommandType = CommandType.StoredProcedure;
132
cmd.Parameters.Add("@FileName ", SqlDbType.VarChar, 200);
133
cmd.Parameters.Add("@FileBody", SqlDbType.Image);
134
cmd.Parameters.Add("@FileType", SqlDbType.VarChar, 4);
135
cmd.Parameters.Add("@File_Index", SqlDbType.Int);
136
137
cmd.Parameters[0].Value = strFileName;
138
cmd.Parameters[1].Value = Docbuffer;
139
//cmd.Parameters[2].Value = strDocExt;]
140
cmd.Parameters[2].Value = fileType;
141
142
//cmd.Parameters.Add(new SqlParameter("@File_Index", SqlDbType.Int));
143
cmd.Parameters[3].Direction = ParameterDirection.ReturnValue;
144
cmd.Connection.Open();
145
cmd.ExecuteNonQuery();
146
strServerFileIndex += cmd.Parameters[3].Value.ToString() + ",";
147
cmd.Connection.Close();
148
}
149
150
//执行客户端存储过程Get_Upload_File
151
cmd = new SqlCommand("Get_Upload_File", connClient);
152
cmd.CommandType = CommandType.StoredProcedure;
153
cmd.Parameters.Add("@FileName ", SqlDbType.VarChar, 200);
154
cmd.Parameters.Add("@FileBody", SqlDbType.Image);
155
cmd.Parameters.Add("@FileType", SqlDbType.VarChar, 4);
156
cmd.Parameters.Add("@File_Index", SqlDbType.Int);
157
158
cmd.Parameters[0].Value = strFileName;
159
cmd.Parameters[1].Value = Docbuffer;
160
//cmd.Parameters[2].Value = strDocExt;
161
cmd.Parameters[2].Value = fileType;
162
163
//cmd.Parameters.Add(new SqlParameter("@File_Index", SqlDbType.Int));
164
cmd.Parameters[3].Direction = ParameterDirection.ReturnValue;
165
cmd.Connection.Open();
166
cmd.ExecuteNonQuery();
167
strClientFileIndex += cmd.Parameters[3].Value.ToString() + ",";
168
cmd.Connection.Close();
169
}
170
171
if (intCount.Equals(files.Count - 1))
172
{
173
bDone = true;
174
}
175
}
176
177
strClientFileIndex = strClientFileIndex.Remove(strClientFileIndex.Length - 1);
178
179
strSQL = "Insert Into Group_Email (Title,Content,Area,SendToUser,Dept,Sender,Files_Index)";
180
strSQL += " values (";
181
strSQL += "'" + strTitle + "',";
182
strSQL += "'" + strContent + "',";
183
strSQL += "'" + strUnitName + "',";
184
strSQL += "'" + strTmpUserName + "',";
185
strSQL += "'" + strDept + "',";
186
strSQL += "'" + strUserName + "',";
187
strSQL += "'" + strClientFileIndex + "')";
188
cmd = new SqlCommand(strSQL, connClient);
189
cmd.Connection.Open();
190
cmd.ExecuteNonQuery();
191
cmd.Connection.Close();
192
193
String strTmpServerFileIndex = strServerFileIndex.Remove(strServerFileIndex.Length - 1);
194
195
strSQL = "Insert Into Group_Email_Sever (Title,Content,Area,SendToUser,Dept,Sender,Files_Index)";
196
strSQL += " values (";
197
strSQL += "'" + strTitle + "',";
198
strSQL += "'" + strContent + "',";
199
strSQL += "'" + strAreaName + "',";
200
strSQL += "'" + strTmpUserName + "',";
201
strSQL += "'" + strTmpDept + "',";
202
strSQL += "'" + strUserName + "',";
203
strSQL += "'" + strTmpServerFileIndex + "')";
204
cmd = new SqlCommand(strSQL, conn);
205
cmd.Connection.Open();
206
cmd.ExecuteNonQuery();
207
cmd.Connection.Close();
208
}
209
////////结束上传多附件/////////////
210
Response.Redirect("../SuccessMsg.aspx");
211
}
212
}
213
using System;2
using System.Data;3
using System.Configuration;4
using System.Collections;5
using System.Web;6
using System.Web.Security;7
using System.Web.UI;8
using System.Web.UI.WebControls;9
using System.Web.UI.WebControls.WebParts;10
using System.Web.UI.HtmlControls;11

12
using System.Data;13
using System.Data.SqlClient;14
using EOffice.Model;15
using EOffice.SqlServer;16
using System.IO;17
using System.Configuration;18

19
//using iWebSMS2000;20
[Serializable]21
public partial class GroupWork_SendEmail : System.Web.UI.Page22
{23
public SqlConnection conn;24
//public iSMS2000 SMS;25
//public DBstep.SMSClient2000 ObjiSMSClient2000;26
protected void Page_Load(object sender, EventArgs e)27
{28
conn = new SqlConnection("SERVER=SERVER;UID=sa;PWD=8860;database=EOFFICE_SERVER;");29
30
}31
protected void btnSubmit_Click(object sender, EventArgs e)32
{33
String strTitle = txtTitle.Text;34
String strContent = txtContent.Text;35
UserInfo info = (UserInfo)Session["EOfficeUserInfo"];36
String strUserName = info.UserName;37
String strTmpDept = info.DeptId.ToString();38

39
String strUnitName = ConfigurationSettings.AppSettings["UnitName"];40
String strServerFileIndex = ""; //服务器端文件附件索引41
String strClientFileIndex = ""; //客户端文件附件索引42

43
String strRemote = HiddenField2.Value;44
String[] strRemoteUser = strRemote.Split(',');45
String strTmpUserName;46
String strTmpServer;47
Boolean bDone = false;48

49
////////上传多附件代码/////////////50
//得到File表单元素51
HttpFileCollection files = HttpContext.Current.Request.Files;52
HttpPostedFile postedFile;53

54
foreach (string strUser in strRemoteUser)55
{56
String[] strSplit = strUser.Split('/');57
strTmpUserName = strSplit[0];58
strTmpServer = strSplit[1];59
String strConnectString = "";60
String strAreaName = "";61
int nAreaID = 0;62
String strDept = "";63
strClientFileIndex = "";64
SqlConnection connClient;65

66
String strSQL = "Select * From Area Where AreaCode='" + strTmpServer + "'";67
SqlCommand cmd = new SqlCommand(strSQL, conn);68
cmd.Connection.Open();69
using (SqlDataReader sdr = cmd.ExecuteReader())70
{71
if (sdr.Read())72
{73
strConnectString = sdr["ConnectString"].ToString();74
strAreaName = sdr["AreaName"].ToString();75
nAreaID = Convert.ToInt16(sdr["ID"]);76
}77
}78
cmd.Connection.Close();79

80
strSQL = "Select * From MemberList Where UserName='" + strTmpUserName + "' And AreaID=" + nAreaID;81
cmd = new SqlCommand(strSQL, conn);82
cmd.Connection.Open();83
using (SqlDataReader sdr = cmd.ExecuteReader())84
{85
if (sdr.Read())86
{87
strDept = sdr["Dept"].ToString();88
}89
}90
cmd.Connection.Close();91

92
connClient = new SqlConnection(strConnectString);93

94
for (int intCount = 0; intCount < files.Count; intCount++)95
{96
postedFile = files[intCount];97

98
if (postedFile.ContentLength > 0)99
{100
String strOldFilePath = postedFile.FileName;101
String strFileName = strOldFilePath.Substring(strOldFilePath.LastIndexOf("\\") + 1);102

103
//上传文件到服务器104
//File1.PostedFile.SaveAs("c:\\Test\\" + DateTime.Now.ToString("yyyyMMddhhmmss") + strExtension);105

106
//用于保存文件大小 107
int intDocLen;108
//Stream用于读取上传数据 109
Stream objStream;110
String strDocExt;111
//上传文件具体内容 112
intDocLen = postedFile.ContentLength;113
strDocExt = strOldFilePath.Substring(strOldFilePath.LastIndexOf(".") + 1);114

115
byte[] Docbuffer = new byte[intDocLen];116
objStream = postedFile.InputStream;117

118

119
//文件保存到缓存 120

121
//缓存将保存到数据库 122
objStream.Read(Docbuffer, 0, intDocLen);123

124
string fileType = postedFile.ContentType;125

126

127
//执行服务器端存储过程Send_Group_Email128
if (!bDone)129
{130
cmd = new SqlCommand("Send_Group_Email", conn);131
cmd.CommandType = CommandType.StoredProcedure;132
cmd.Parameters.Add("@FileName ", SqlDbType.VarChar, 200);133
cmd.Parameters.Add("@FileBody", SqlDbType.Image);134
cmd.Parameters.Add("@FileType", SqlDbType.VarChar, 4);135
cmd.Parameters.Add("@File_Index", SqlDbType.Int);136

137
cmd.Parameters[0].Value = strFileName;138
cmd.Parameters[1].Value = Docbuffer;139
//cmd.Parameters[2].Value = strDocExt;]140
cmd.Parameters[2].Value = fileType;141

142
//cmd.Parameters.Add(new SqlParameter("@File_Index", SqlDbType.Int));143
cmd.Parameters[3].Direction = ParameterDirection.ReturnValue;144
cmd.Connection.Open();145
cmd.ExecuteNonQuery();146
strServerFileIndex += cmd.Parameters[3].Value.ToString() + ",";147
cmd.Connection.Close();148
}149

150
//执行客户端存储过程Get_Upload_File151
cmd = new SqlCommand("Get_Upload_File", connClient);152
cmd.CommandType = CommandType.StoredProcedure;153
cmd.Parameters.Add("@FileName ", SqlDbType.VarChar, 200);154
cmd.Parameters.Add("@FileBody", SqlDbType.Image);155
cmd.Parameters.Add("@FileType", SqlDbType.VarChar, 4);156
cmd.Parameters.Add("@File_Index", SqlDbType.Int);157

158
cmd.Parameters[0].Value = strFileName;159
cmd.Parameters[1].Value = Docbuffer;160
//cmd.Parameters[2].Value = strDocExt;161
cmd.Parameters[2].Value = fileType;162

163
//cmd.Parameters.Add(new SqlParameter("@File_Index", SqlDbType.Int));164
cmd.Parameters[3].Direction = ParameterDirection.ReturnValue;165
cmd.Connection.Open();166
cmd.ExecuteNonQuery();167
strClientFileIndex += cmd.Parameters[3].Value.ToString() + ",";168
cmd.Connection.Close();169
}170

171
if (intCount.Equals(files.Count - 1))172
{173
bDone = true;174
}175
}176

177
strClientFileIndex = strClientFileIndex.Remove(strClientFileIndex.Length - 1);178

179
strSQL = "Insert Into Group_Email (Title,Content,Area,SendToUser,Dept,Sender,Files_Index)";180
strSQL += " values (";181
strSQL += "'" + strTitle + "',";182
strSQL += "'" + strContent + "',";183
strSQL += "'" + strUnitName + "',";184
strSQL += "'" + strTmpUserName + "',";185
strSQL += "'" + strDept + "',";186
strSQL += "'" + strUserName + "',";187
strSQL += "'" + strClientFileIndex + "')";188
cmd = new SqlCommand(strSQL, connClient);189
cmd.Connection.Open();190
cmd.ExecuteNonQuery();191
cmd.Connection.Close();192

193
String strTmpServerFileIndex = strServerFileIndex.Remove(strServerFileIndex.Length - 1);194
195
strSQL = "Insert Into Group_Email_Sever (Title,Content,Area,SendToUser,Dept,Sender,Files_Index)";196
strSQL += " values (";197
strSQL += "'" + strTitle + "',";198
strSQL += "'" + strContent + "',";199
strSQL += "'" + strAreaName + "',";200
strSQL += "'" + strTmpUserName + "',";201
strSQL += "'" + strTmpDept + "',";202
strSQL += "'" + strUserName + "',";203
strSQL += "'" + strTmpServerFileIndex + "')";204
cmd = new SqlCommand(strSQL, conn);205
cmd.Connection.Open();206
cmd.ExecuteNonQuery();207
cmd.Connection.Close();208
}209
////////结束上传多附件/////////////210
Response.Redirect("../SuccessMsg.aspx");211
}212
}213

下载文件的代码:
DownFile.aspx
DownFile.aspx.cs
1
using System;
2
using System.Data;
3
using System.Configuration;
4
using System.Collections;
5
using System.Web;
6
using System.Web.Security;
7
using System.Web.UI;
8
using System.Web.UI.WebControls;
9
using System.Web.UI.WebControls.WebParts;
10
using System.Web.UI.HtmlControls;
11
12
using System.Data;
13
using System.Data.SqlClient;
14
using EOffice.Model;
15
using EOffice.SqlServer;
16
using System.IO;
17
18
[Serializable]
19
public partial class GroupWork_DownFile : System.Web.UI.Page
20
{
21
public SqlConnection conn;
22
public String strFileID;
23
public UserInfo info;
24
protected void Page_Load(object sender, EventArgs e)
25
{
26
strFileID = Request.QueryString["ID"];
27
info = (UserInfo)Session["EOfficeUserInfo"];
28
29
if (strFileID == null)
30
{
31
Response.Redirect("../ErrorMsg.aspx");
32
}
33
34
DbLink db = new DbLink();
35
conn = db.Connect();
36
37
String strSQL = "Select * From Group_Files Where ID=" + strFileID; //+ " And SendToUser = '" + info.UserName + "'";
38
SqlCommand cmd = new SqlCommand(strSQL, conn);
39
cmd.Connection.Open();
40
using (SqlDataReader sdr = cmd.ExecuteReader())
41
{
42
if (!sdr.Read())
43
{
44
Response.Redirect("../ErrorMsg.aspx");
45
}
46
else
47
{
48
Response.Clear();
49
String strFileName = sdr["FileName"].ToString();
50
Response.ContentType = "APPLICATION/OCTET-STREAM";
51
Response.AddHeader("content-disposition", "attachment;filename=" + HttpUtility.UrlEncode(strFileName));
52
Response.Buffer = true;
53
Response.BinaryWrite((byte[])sdr["FileBody"]);
54
55
//Response.Clear();
56
//Response.ContentType = "application/octet-stream";
57
////Response.AddHeader("Content-Type", sdr["FileType"].ToString());
58
//Response.BinaryWrite((byte[])sdr["FileBody"]);
59
}
60
}
61
//conn.Close();
62
63
/*
64
SqlDataAdapter da = new SqlDataAdapter(strSQL, conn);
65
SqlCommandBuilder MyCB = new SqlCommandBuilder(da);
66
DataSet ds = new DataSet("MyImages");
67
byte[] MyData = new byte[0];
68
da.Fill(ds, "MyImages");
69
DataRow myRow = ds.Tables["MyImages"].Rows[0];
70
String strFileName = Convert.ToString(myRow["FileName"]);
71
MyData = (byte[])myRow["FileBody"];
72
int ArraySize = new int();
73
ArraySize = MyData.GetUpperBound(0);
74
FileStream fs = new FileStream(@"C:\\Download\" + strFileName,
75
FileMode.OpenOrCreate, FileAccess.Write);
76
fs.Write(MyData, 0, ArraySize);
77
fs.Close();
78
*/
79
//Response.Write("下载文件" + strFileName + "成功!");
80
}
81
}
82
using System;2
using System.Data;3
using System.Configuration;4
using System.Collections;5
using System.Web;6
using System.Web.Security;7
using System.Web.UI;8
using System.Web.UI.WebControls;9
using System.Web.UI.WebControls.WebParts;10
using System.Web.UI.HtmlControls;11

12
using System.Data;13
using System.Data.SqlClient;14
using EOffice.Model;15
using EOffice.SqlServer;16
using System.IO;17

18
[Serializable]19
public partial class GroupWork_DownFile : System.Web.UI.Page20
{21
public SqlConnection conn;22
public String strFileID;23
public UserInfo info;24
protected void Page_Load(object sender, EventArgs e)25
{26
strFileID = Request.QueryString["ID"];27
info = (UserInfo)Session["EOfficeUserInfo"];28

29
if (strFileID == null)30
{31
Response.Redirect("../ErrorMsg.aspx");32
}33

34
DbLink db = new DbLink();35
conn = db.Connect();36

37
String strSQL = "Select * From Group_Files Where ID=" + strFileID; //+ " And SendToUser = '" + info.UserName + "'";38
SqlCommand cmd = new SqlCommand(strSQL, conn);39
cmd.Connection.Open();40
using (SqlDataReader sdr = cmd.ExecuteReader())41
{42
if (!sdr.Read())43
{44
Response.Redirect("../ErrorMsg.aspx");45
}46
else47
{48
Response.Clear();49
String strFileName = sdr["FileName"].ToString();50
Response.ContentType = "APPLICATION/OCTET-STREAM";51
Response.AddHeader("content-disposition", "attachment;filename=" + HttpUtility.UrlEncode(strFileName));52
Response.Buffer = true;53
Response.BinaryWrite((byte[])sdr["FileBody"]);54

55
//Response.Clear();56
//Response.ContentType = "application/octet-stream";57
////Response.AddHeader("Content-Type", sdr["FileType"].ToString());58
//Response.BinaryWrite((byte[])sdr["FileBody"]); 59
}60
}61
//conn.Close();62

63
/*64
SqlDataAdapter da = new SqlDataAdapter(strSQL, conn);65
SqlCommandBuilder MyCB = new SqlCommandBuilder(da);66
DataSet ds = new DataSet("MyImages");67
byte[] MyData = new byte[0];68
da.Fill(ds, "MyImages");69
DataRow myRow = ds.Tables["MyImages"].Rows[0];70
String strFileName = Convert.ToString(myRow["FileName"]);71
MyData = (byte[])myRow["FileBody"];72
int ArraySize = new int();73
ArraySize = MyData.GetUpperBound(0);74
FileStream fs = new FileStream(@"C:\\Download\" + strFileName,75
FileMode.OpenOrCreate, FileAccess.Write);76
fs.Write(MyData, 0, ArraySize);77
fs.Close();78
*/79
//Response.Write("下载文件" + strFileName + "成功!");80
}81
}82



浙公网安备 33010602011771号