프로젝트

일반

사용자정보

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

markus / FileSave / FileUploadWevService / FileUpload.asmx.cs @ f7a2b3e1

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

1
using System;
2
using System.Collections.Generic;
3
using System.Drawing;
4
using System.IO;
5
using System.Linq;
6
using System.Web;
7
using System.Web.Services;
8

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

    
22
        [WebMethod]
23
        //public string Run(string ProjectNo, string VPNo, string UserID, string FileName, byte[] imageBytes)
24
        public string Run(string ProjectNo, string VPNo, string UserID, string FileName, byte[] f)
25
        {
26
            KCOMDataModel.DataModel.KCOMEntities entity = new KCOMDataModel.DataModel.KCOMEntities(KCOMDataModel.Common.ConnectStringBuilder.KCOMConnectionString().ToString());
27

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

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

    
52
                if (!directoryInfo_.Exists)
53
                {
54
                    directoryInfo_.Create();
55
                }
56
                //Image imageinfo = Converter(base64String);
57

    
58
                MemoryStream ms = new MemoryStream(f);
59
                FileStream fs = new FileStream(directoryInfo_ + @"\" + FileName, FileMode.Create);
60
                ms.WriteTo(fs);
61

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

    
72
            return result;
73
        }
74

    
75
        public Image Converter(string base64String)
76
        {
77
            byte[] imageBytes = Convert.FromBase64String(base64String);
78

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