8,735
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.Data.SqlClient;
using WebGISApp.Web.General;
namespace WebGISApp.Web
{
/// <summary>
/// UploadHandler 的摘要说明
/// </summary>
public class UploadHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string filename = Uri.UnescapeDataString(Convert.ToString(context.Request.QueryString["InputFile"]));
string fileExtend = System.IO.Path.GetExtension(filename);
string fid = Uri.UnescapeDataString(Convert.ToString(context.Request.QueryString["Fid"]));
string newGuidName = "";
string errorString = "";
SqlConnection sqlConnection = SqlHelper.OpenSqlConnection(ref errorString);
SqlCommand myComm = new SqlCommand();
myComm.Connection = sqlConnection;
SqlTransaction st = sqlConnection.BeginTransaction();
myComm.Transaction = st;
try
{
newGuidName = Guid.NewGuid().ToString() + fileExtend;
context.Response.ContentType = "text/plain";
context.Response.ContentEncoding = System.Text.Encoding.Unicode;
int ids = -1;
try
{
if (fid.Trim().ToUpper() != "NULL")
{
myComm.CommandText = string.Format(XMLHelper.GetCommandString("CataLogConfig/DeleteFileInfo", "value"), fid);
File.Delete(context.Server.MapPath("~/" + Convert.ToString(myComm.ExecuteScalar())));
}
string strSQL = XMLHelper.GetCommandString("CataLogConfig/AddFileInfo", "value");
myComm.CommandText = strSQL;
myComm.Parameters.AddWithValue("@FileName", filename);
myComm.Parameters.AddWithValue("@GuidName", "Files/" + newGuidName);
//if (type.Trim() == "img")
//{
// myComm.Parameters.AddWithValue("@Bid", bid);
//}
//else if (type.Trim() == "doc")
//{
// myComm.Parameters.AddWithValue("@Did", did);
//}
ids = Convert.ToInt32(myComm.ExecuteScalar());
st.Commit();
}
catch
{
ids = -2;
st.Rollback();
return;
}
finally
{
context.Response.Write(ids.ToString());
}
using (FileStream fileStream = File.Create(context.Server.MapPath("~/Files/" + newGuidName)))
{
byte[] bufferData = new byte[4096];
int bytesToBeRead;
while ((bytesToBeRead = context.Request.InputStream.Read(bufferData, 0, bufferData.Length)) != 0)
{
fileStream.Write(bufferData, 0, bytesToBeRead);
}
fileStream.Close();
}
}
catch
{
st.Rollback();
}
finally
{
myComm.Dispose();
sqlConnection.Dispose();
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
}