블로그 이미지
Magic_kit
study 관련자료를 한곳으로 자기 개발 목적으로 재태크 재무 관리 목적으로 일상생활의 팁을 공유 하기 위하여 블로그를 개설 하였습니다.

calendar

1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28

Category

Recent Post

Recent Comment

Archive

2009. 10. 12. 21:31 .Net Project/ASP.NET 3.5 Sp1
반응형
 Upload.SQL

 --================================================--
------- 자료실 게시판 응용 프로그램-------
--================================================--

/*================================================*/
--[0] 자료실 게시판(Upload)용 테이블 설계
Create Table dbo.Upload
(
   Num Int Identity(1, 1) Not Null Primary Key,        --번호
   Name VarChar(25) Not Null,                          --이름
   Email VarChar(100) Null,                            --이메일 
   Title VarChar(150) Not Null,                        --제목
   PostDate DateTime Default GetDate() Not Null,       --작성일 
   PostIP VarChar(15) Not Null,                        --작성IP
   Content Text Not Null,                              --내용
   Password VarChar(20) Not Null,                      --비밀번호
   ReadCount Int Default 0,                            --조회수
   Encoding VarChar(10) Not Null,                      --인코딩(HTML/Text)
   Homepage VarChar(100) Null,                         --홈페이지
   ModifyDate DateTime Null,                           --수정일 
   ModifyIP VarChar(15) Null,                          --수정IP
 ---
 FileName VarChar(255) Null,                         --파일명
 FileSize Int Default(0),                            --파일크기
 DownCount Int Default(0)                            --다운수
)
Go
select *From Upload
/*================================================*/
--[1] ~ [6] : 기본 SQL문 예시문 6가지 작성
Insert Into Values
/*================================================*/
--[7]~ : 6개 이상 로직을 처리하는 저장 프로시저 생성
/*================================================*/
--[7] 기본 게시판(Upload)에 글을 작성하는 저장 프로시저 :WriteUpload
Create Proc dbo.WriteUpload
     @Name VarChar(25),
     @Email VarChar(100),
     @Title VarChar(150),
     @PostIP VarChar(15),
     @Content Text,
     @Password VarChar(20),
     @Encoding VarChar(10),
     @Homepage VarChar(100),
     @FileName VarChar(255),
     @FileSize Int 
--With Encryption
As
 Insert Upload
 (
    Name, Email, Title, PostIP, Content, Password,
    Encoding, Homepage, FileName, FileSize
 )
 Values
 (
      @Name, @Email, @Title, @PostIP, @Content,
      @Password, @Encoding,
      @Homepage, @FileName, @FileSize
 )
Go

/*================================================*/
--[8] 기본 게시판(Upload)에서 데이터를 읽어오는 저장 프로시저 :ListUpload

Create Procedure dbo.ListUpload
As
 Select * From Upload Order By Num Desc
Go

/*================================================*/
--[9] 해당 글을 세부적으로 읽어오는 저장 프로시저 :ViewUpload
Create Procedure dbo.ViewUpload
     @Num Int
As
     Update Upload
     Set ReadCount = ReadCount + 1
 Where Num = @Num

Select * From Upload Where Num = @Num
Go
/*================================================*/
--[10] 해당 글에 대한 비밀번호 읽어오는 저장 프로시저 :ReadPassword
Create Proc dbo.ReadPasswordUpload
     @Num Int
As
     Select Password From Upload Where Num = @Num
Go
/*================================================*/
--[11] 해당 글을 수정하는 저장 프로시저 : ModifyUpload
--Create Proc dbo.ModifyUpload
-- @Name VarChar(25),
-- @Email VarChar(100),
-- @Title VarChar(150),
-- @ModifyIP VarChar(15),
-- @ModifyDate DateTime,
-- @Content Text,
-- @Encoding VarChar(10),
-- @Homepage VarChar(100),
-- @Num Int
--As
-- Update Upload
-- Set
--  Name = @Name,
--  Email = @Email,
--  Title = @Title,
--  ModifyIP = @ModifyIP,
--  ModifyDate = @ModifyDate,
--  Content = @Content,
--  Encoding = @Encoding,
--  Homepage = @Homepage
-- Where Num = @Num
--Go
/*================================================*/
--[11] 해당 글을 수정하는 저장 프로시저 : ModifyUpload 수정
Create Proc dbo.ModifyUpload
     @Name VarChar(25),
     @Email VarChar(100),
     @Title VarChar(150),
     @ModifyIP VarChar(15),
     @Content Text,
     @Encoding VarChar(10),
     @Homepage VarChar(100),
     @Password VarChar(20), -- <-- 추가
     @FileName VarChar(255), -- <-- 추가
     @FileSize Int,   -- <-- 추가
     @Num Int
As
     Declare @cnt Int
     Select @cnt = Count(*) From Upload
               Where Num = @Num And Password = @Password

 If @cnt > 0  -- 넘겨져 온 번호와 암호가 맞는 데이터가 있다면...
    Update Upload
  Set
     Name = @Name,
     Email = @Email,
     Title = @Title,
     ModifyIP = @ModifyIP,
     ModifyDate = GetDate(),
     Content = @Content,
     Encoding = @Encoding,
     Homepage = @Homepage, FileName = @FileName, FileSize = @FileSize
                        Where Num = @Num
 Else
     Return -1 -- 암호가 틀리면 -1을 반환하자..
Go

/*================================================*/
--[12] 해당 글 지우는 저장 프로시저 :DeleteUpload
Create Proc dbo.DeleteUpload
     @Num Int
As
     Delete Upload Where Num = @Num
Go

Alter Proc dbo.DeleteUpload
     @Password VarChar(20),
     @Num Int
As
     Declare @cnt Int
 -- 암호와 번호가 맞으면 1을 반환
 Select @cnt = Count(*) From Upload
              Where Num = @Num And Password = @Password

 If @cnt > 0
  Delete Upload Where Num = @Num And Password = @Password
 Else 
  Return -1
Go

/*================================================*/
--[13] 검색 : SearchUpload 

Create Procedure dbo.SearchUpload
     @SearchField VarChar(25),
     @SearchQuery VarChar(25)
As
     Declare @strSql VarChar(250)
            Set @strSql = '
            Select * From Upload 
               Where ' + @SearchField + ' Like ''%' + @SearchQuery + '%'' 
            Order By Num Desc '
 --Print(@strSql)
 Exec(@strSql)
Go

SearchUpload 'FileName', 'gif'
Go
/*================================================*/
--[14] 다운로드 카운트 증가 : IncreaseDownCountUpload

Alter Proc dbo.IncreaseDownCountUpload
      @filename Int
As
      Update Upload
      Set DownCount = DownCount + 1
      Where filename = @filename
Go


<connectionStrings>
  <add name="ConnectionString" 
          connectionString="server=.;database=Upload;uid=Upload;pwd=1234"
          providerName="System.Data.SqlClient">
  </add>
 </connectionStrings> 



 Upload/Write.aspx

 



<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Write.aspx.cs" Inherits="Upload_Write" %>

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

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>글쓰기</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      
    이름 : <asp:TextBox ID="txtName" runat="server"></asp:TextBox> <br />   
    이메일 : <asp:TextBox ID="txtmail" runat="server"></asp:TextBox><br />  
    홈페이지 : <asp:TextBox ID="txtHomepage" runat="server"></asp:TextBox>    
    제목 : <asp:TextBox ID="txtTitle" runat="server"></asp:TextBox> <br />   
    내용 : <asp:TextBox ID="txtContent" runat="server" TextMode="MultiLine"
                     Columns="20" Rows="5"></asp:TextBox>
            <img src="images/아라가키.png" width="100px"height="100px" /> <br />
    파일첨부 : <asp:FileUpload ID="ctlFileName" runat="server" /><br />
   
    인코딩 : <asp:RadioButtonList ID="LstEncoding" runat="server"
                       RepeatDirection="Horizontal" RepeatLayout="Flow">
                <asp:ListItem Selected="True">Text</asp:ListItem>
                <asp:ListItem>HTML</asp:ListItem>
                <asp:ListItem>Mixed</asp:ListItem>
             </asp:RadioButtonList><br />   
    암호 :<asp:TextBox ID="txtPassword" runat="server"
                                     TextMode="Password"></asp:TextBox><br />
   
    <asp:LinkButton ID="btnWrite" runat="server" onclick="btnWrite_Click">
             저장</asp:LinkButton> &nbsp
        <asp:LinkButton ID="btnList" runat="server" onclick="btnList_Click">리스트
        </asp:LinkButton>
       
    </div>
    </form>
</body>
</html>


 Upload/Write.Cs

using System;
using System.IO;

public partial class Upload_Write : System.Web.UI.Page
{
    //저장 버튼 클릭하였을경우
    protected void btnWrite_Click(object sender, EventArgs e)
    {
        //파일업로드
        string strDirectory = Server.MapPath(".") + "
\\files\\";
        string strFileName = String.Empty;
        if (!String.IsNullOrEmpty(ctlFileName.FileName)) //첨부된 파일이 존재 한다면..
        {
      //파일명추출 GetFilePath 사용하여 중복파일에 번호를 부여하여 처리해주고 싶을때...
      //파일명 중복처리 필요 

      strFileName = GetFilePath(strDirectory,ctlFileName.FileName); 
            //(경로 + 파일명) 으로 저장 실행
            ctlFileName.PostedFile.SaveAs(Path.Combine
                             (strDirectory, strFileName));
        }
        //DB저장
        UploadBiz ub = new UploadBiz();

        #region 엔터티사용
        //UploadEntity ue = new UploadEntity();
        //ue.Name = txtName.Text;
        //ue.Email = txtmail.Text;
        //ue.Title = txtTitle.Text;
        //ue.PostIP = Request.UserHostAddress;
        //ue.Content = txtContent.Text;
        //ue.Password = txtPassword.Text;
        //ue.Encoding = LstEncoding.SelectedValue;
        //ue.Homepage = txtHomepage.Text;
        //ue.FileName = strFileName; //변경
        //ue.FileSize = ctlFileName.PostedFile.ContentLength; //파일사이즈 
        #endregion

        ub.WriteUpload(txtName.Text
            , txtmail.Text
            , txtTitle.Text
            , Request.UserHostAddress
            , txtContent.Text
            , txtPassword.Text
            , LstEncoding.SelectedValue
            , txtHomepage.Text
            , strFileName //변경
            , ctlFileName.PostedFile.ContentLength);

        //리스트로 이동
        btnList_Click(null, null);
    }

    private string GetFilePath(string strBaseDirTemp, string strFileNameTemp)
    {
      string strName = //순수파일명 : Test 
      Path.GetFileNameWithoutExtension(strFileNameTemp); //[1]순수 파일명만 반환

        string strExt = //확장자 : .txt
            Path.GetExtension(strFileNameTemp); //[2]순수 확장자만 : .포함

        bool blnExists = true;
        int i = 0;
        while (blnExists)
        {
            //[3]Path.Combine(경로, 파일명) = 경로+파일명 = 경로 + 파일명
            if (File.Exists(Path.Combine(strBaseDirTemp, strFileNameTemp)))
            {
                strFileNameTemp = strName + "(" + ++i + ")" + strExt; //Text(3).txt
            }
            else
            {
                blnExists = false;
            }
        }
            return strFileNameTemp;
    }
    //리스트버튼 클릭하였을경우
    protected void btnList_Click(object sender, EventArgs e)
    {
        Response.Redirect("~/Upload/List.aspx");
    }
}









반응형
posted by Magic_kit