<%@ WebHandler Language="C#" Class="UploadHandler" %>

using System;
using System.Web;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Net;
using System.Web.Services;
using System.Text;
using DataLinkMesWork;
using System.Data.SqlClient;

public class UploadHandler : IHttpHandler
{
    private static string connectionString = System.Configuration.ConfigurationManager.AppSettings.GetValues("ConnectionString")[0].ToString();

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        string filePath = "../webpage/part";
        filePath = HttpContext.Current.Server.MapPath(filePath);
        string num = HttpContext.Current.Request["num"];
        string tableName = HttpContext.Current.Request["tableName"];
        string result = "";
        bool isOK;



        var stream = new StreamReader(context.Request.InputStream).ReadToEnd();
        JsonData jsonData = JsonMapper.ToObject(stream);
        //DataLink.LogJsonData(jsonData);



        try
        {
            Guid guid = Guid.NewGuid();
            string uid = guid.ToString().Replace("-", "").ToUpper();
            HttpFileCollection files = context.Request.Files;
            if (files.Count > 0)
            {
                for (int i = 0; i < files.Count; i++)
                {
                    HttpPostedFile hpFile = files[0];
                    if (hpFile.ContentLength > 0)
                    {
                        string fileName = System.IO.Path.GetFileName(hpFile.FileName);
                        string suffix = fileName.Split(new Char[] { '.' })[1];
                        string name = fileName.Split(new Char[] { '.' })[0];
                        string sql = "insert into  " + tableName + "  (num, uid, name, suffix, 是否启用) values(" + num + ",'" + uid + "','" + name + "','" + suffix + "'," + '1' + ")";
                        isOK =DataLinkMesWork.DataLink.ExecuteNonQuery(sql);
                        



                        //--业务代码  1：
                        //-- 1 ：发货管理_附件
                        //-- 2 ：合同信息管理_履约保证金_履约保函
                        //-- 3 ：合同管理_文件路径
                        //-- 4 ：PDM_机床总图_文件列表
                        //-- 5 ：采购管理_采购发票_附件
                        //-- 6 ：车间采购管理_发票结算申请单
                        //-- 7 ：设备管理_设备监控_图片
                        //-- 8 ：车间生产管理_质检管理
                        //-- 9 ：人员管理_图片
                        //--10  tableName

                        //SET ANSI_NULLS ON
                        //GO
                        //SET QUOTED_IDENTIFIER ON
                        //GO
                        //ALTER   PROCEDURE [dbo].[_文件存储_高精_增加]
                        //		   @业务代码 int,
                        //           @文件标识 int,
                        //           @文件名称 nvarchar(150),
                        //           @文件后缀 nvarchar(50),
                        //           @文件内容 varbinary(max)

                        //	as 

                        //SET NOCOUNT ON; 
                        //INSERT INTO [dbo].[_文件存储_高精](业务代码,[文件标识],[文件名称],[文件后缀],[文件内容])
                        //     VALUES(@业务代码,@文件标识,@文件名称,@文件后缀,@文件内容)




                        //isOK = SQLCommon.ExecuteNonQuery(sql, connectionString, out result);
                        //isOK = SQLCommon.ExecuteNonQuery(sql, connectionString, out result);
                        if (isOK)
                        {
                            try
                            {
                                filePath = filePath + "/" + uid + "." + suffix;
                                hpFile.SaveAs(filePath);
                                result = "[{ \"result\":\"1\"}]";
                            }
                            catch
                            {

                            }
                        }
                        else
                        {
                            result = "[{ \"result\":\"0\"}]";
                        }
                        try
                        {
                            //增加文件保存到数据库的功能
                            byte[]bytes = new byte[files[0].InputStream.Length];
                            files[0].InputStream.Read(bytes, 0, bytes.Length);
                            string procedureName = "_文件存储_高精_增加";
                            string errorMessage;
                            SqlParameter []thisParms = new SqlParameter[5];
                            thisParms[0] = new SqlParameter("@业务代码", 10);
                            thisParms[1] = new SqlParameter("@文件标识", uid);
                            thisParms[2] = new SqlParameter("@文件名称", name);
                            thisParms[3] = new SqlParameter("@文件后缀", suffix);
                            thisParms[4] = new SqlParameter("@文件内容", bytes);
                            DataLinkMesWork.DataLink.ExecuteStoredProcedure(procedureName, ref thisParms, out errorMessage);


                            if(DataLinkMesWork.DataLink.isBakup=="1")
                            {
                                DataLinkMesWork.DataLink.ExecuteNonQuery_Bakup(sql);
                                DataLinkMesWork.DataLink.ExecuteStoredProcedure_Bakup(procedureName, ref thisParms, out errorMessage);
                            }
                        }
                        catch
                        {

                        }
                    }
                    else
                    {
                        context.Response.Write(result);
                    }
                }
            }
        }
        catch (Exception ex)
        {
            result = "[{ \"result\":\"0\"}]";
        }
        context.Response.Write(result);
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}
