프로젝트

일반

사용자정보

통계
| 브랜치(Branch): | 개정판:

markus / FileUploadWevService / FileUpload.asmx.cs @ 76dc223b

이력 | 보기 | 이력해설 | 다운로드 (3.32 KB)

1
using KCOMDataModel.DataModel;
2
using System;
3
using System.Collections.Generic;
4
using System.Configuration;
5
using System.Drawing;
6
using System.IO;
7
using System.Linq;
8
using System.Web;
9
using System.Web.Services;
10

    
11
namespace FileUploadWevService
12
{
13
    /// <summary>
14
    /// FileUpload의 요약 설명입니다.
15
    /// </summary>
16
    [WebService(Namespace = "http://tempuri.org/")]
17
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
18
    [System.ComponentModel.ToolboxItem(false)]
19
    // ASP.NET AJAX를 사용하여 스크립트에서 이 웹 서비스를 호출하려면 다음 줄의 주석 처리를 제거합니다. 
20
    // [System.Web.Script.Services.ScriptService]
21
    public class FileUpload : System.Web.Services.WebService
22
    {
23

    
24
        [WebMethod]
25
        //public string Run(string ProjectNo, string VPNo, string UserID, string FileName, byte[] imageBytes)
26
        public string Run(string ProjectNo, string VPNo, string UserID, string FileName, byte[] f)
27
        {
28
            string sConnString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
29
            KCOMEntities entity = new KCOMEntities(sConnString);
30

    
31
            /// 사용자가 Comment한 이미지 URL를 생성한다.
32
            
33
            var item = entity.PROPERTIES.Where(data => data.TYPE == "SystemInfo" && data.PROPERTY == "Url").FirstOrDefault();
34
            string result = "";
35
            if (item!=null)
36
            {
37
                result = string.Format(@"{0}/UserData/{1}/{2}/{3}", item.VALUE, ProjectNo, UserID, FileName);
38
            }
39
            else
40
            {
41
                throw new Exception("SystemInfo 정보가 없습니다."); 
42
            }
43

    
44
            try
45
            {
46
                var TileSourceProperty = entity.PROPERTIES.Where(data => data.TYPE == "TileSorceStorage" && data.PROPERTY == ProjectNo).FirstOrDefault();
47
                if(TileSourceProperty == null)
48
                {
49
                    throw new Exception("TileSourceStorage 정보가 없습니다.");
50
                }
51
                /// 실제 이미지를 저장할 위치
52
                string DirectoryPath = string.Format(Path.Combine(TileSourceProperty.VALUE , "UserData", ProjectNo, UserID));
53
                DirectoryInfo directoryInfo_ = new DirectoryInfo(DirectoryPath);
54

    
55
                if (!directoryInfo_.Exists)
56
                {
57
                    directoryInfo_.Create();
58
                }
59
                //Image imageinfo = Converter(base64String);
60

    
61
                MemoryStream ms = new MemoryStream(f);
62
                FileStream fs = new FileStream(directoryInfo_ + @"\" + FileName, FileMode.Create);
63
                ms.WriteTo(fs);
64

    
65
                ms.Close();
66
                fs.Close();
67
                fs.Dispose();
68
                //imageinfo.Save(DirectoryPath + @"\" + FileName + "png", System.Drawing.Imaging.ImageFormat.Png);
69
            }
70
            catch (Exception ex)
71
            {
72
                result = ex.ToString();
73
            }
74

    
75
            return result;
76
        }
77

    
78
        public Image Converter(string base64String)
79
        {
80
            byte[] imageBytes = Convert.FromBase64String(base64String);
81

    
82
            using (var ms = new MemoryStream(imageBytes, 0, imageBytes.Length))
83
            {
84
                Image image = Image.FromStream(ms, true);
85
                return image;
86
            }
87
        }
88
    }
89
}
클립보드 이미지 추가 (최대 크기: 500 MB)