블로그 이미지
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. 11. 2. 14:13 .Net Project/ASP.NET 3.5 Sp1
반응형
 입력 Write.aspx
 



<!-- BoardWirte.aspx -->

 

<%@ Page Language="C#" AutoEventWireup="true"

  CodeFile="BoardWrite.aspx.cs"

  Inherits="DotNetNote_BoardWrite" %>

 

<%@ Register Assembly="FreeTextBox"

  Namespace="FreeTextBoxControls"

  TagPrefix="FTB" %>

<!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>

  <link href="../DotNetNote/DotNetNote.css"

    rel="stylesheet" type="text/css" />

</head>

<body>

  <form id="form1" runat="server">

    <div>

      <h3>완성형 게시판</h3>

      <font style="font-size: 9pt; color: #ff0000">

        글 쓰기 - 다음 필드들을 채워주세요.</font>

      <hr width="100%" size="1" />

      <table id="Table1" style="border-collapse: collapse"

        bordercolor="black" cellspacing="0"

        rules="none" width="600" align="center"

        bgcolor="white">

        <tr>

          <td width="100"

            bgcolor="#efefef" align="right">

              <font color="#ff0000">*</font>&nbsp;

          </td>

          <td width="500">

            <asp:TextBox ID="txtName" runat="server"

              BorderWidth="1px" BorderStyle="Solid"

              MaxLength="10" Width="150px"></asp:TextBox>

            <asp:RequiredFieldValidator ID="valName"

              runat="server" ErrorMessage="* 이름을 작성해 주세요."

              ControlToValidate="txtName" Display="None"

              SetFocusOnError="True"></asp:RequiredFieldValidator>

          </td>

        </tr>

        <tr>

          <td bgcolor="#efefef" align="right">

              E-mail

          </td>

          <td>

            <asp:TextBox ID="txtEmail" runat="server"

              BorderWidth="1px" BorderStyle="Solid"

              MaxLength="80" Width="200px"></asp:TextBox>

            <font style="font-size: 9pt" color="#aaaaaa">

              <i>(Optional)</i></font>

            <asp:RegularExpressionValidator

              ID="valEmail" runat="server"

              ErrorMessage="* 메일형식이 올바르지 않습니다"

              ControlToValidate="txtEmail"

              Display="None" ValidationExpression=

                "\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"

              SetFocusOnError="True"></asp:RegularExpressionValidator>

          </td>

        </tr>

        <tr>

          <td bgcolor="#efefef" align="right">

              Homepage

          </td>

          <td>

            <asp:TextBox ID="txtHomepage" runat="server"

              BorderWidth="1px" BorderStyle="Solid"

              MaxLength="80" Width="300px"></asp:TextBox>

              <font style="font-size: 9pt" color="#aaaaaa">

                <i>(Optional)</i>

              </font>

            <asp:RegularExpressionValidator

              ID="valHomepage" runat="server"

              ErrorMessage="* 홈페이지를 정확히 작성해주세요."

              ControlToValidate="txtHomepage"

              Display="None" ValidationExpression=

                "http://([\w-]+\.)+[\w-]+(/[\w- ./?%&amp;=]*)?"

              SetFocusOnError="True">

            </asp:RegularExpressionValidator>

          </td>

        </tr>

        <tr>

          <td align="right" bgcolor="#efefef">

              <font color="#ff0000">*</font>&nbsp;

          </td>

          <td>

            <asp:TextBox ID="txtTitle" runat="server"

              BorderWidth="1px" BorderStyle="Solid"

              MaxLength="30" Width="480px"></asp:TextBox><font

                face="굴림">&nbsp;</font>

            <asp:RequiredFieldValidator ID="valTitle"

              runat="server" ErrorMessage="* 제목을 기입해 주세요"

              ControlToValidate="txtTitle"

              Display="None" SetFocusOnError="True">

            </asp:RequiredFieldValidator>

          </td>

        </tr>

        <tr>

          <td align="right" bgcolor="#efefef">

            <font color="#ff0000">*</font>&nbsp;

          </td>

          <td>

            <FTB:FreeTextBox ID="txtContent"

              runat="server" Height="200px"

              Language="ko-KR" StartMode="HtmlMode"

              Width="480px">

            </FTB:FreeTextBox>

            <br />

            <asp:RequiredFieldValidator ID="valContent"

              runat="server" ErrorMessage="* 내용을 기입해 주세요"

              ControlToValidate="txtContent"

              Display="None" SetFocusOnError="True">

            </asp:RequiredFieldValidator>

          </td>

        </tr>

        <tr>

          <td align="right" bgcolor="#efefef">

              파일첨부

          </td>

          <td>

            <asp:CheckBox ID="chkUpload" runat="server"

              Text="이 체크박스를 선택하면 업로드 화면이 나타납니다."

              AutoPostBack="True"

              OnCheckedChanged="chkUpload_CheckedChanged">

            </asp:CheckBox><font style="font-size: 9pt"

              color="#aaaaaa"><i>(Optional)</i></font><br />

            <asp:Panel ID="pnlFile" runat="server"

              Width="240px" Visible="False"

              Height="21px">

              <input id="txtFileName" style="width: 290px;

                height: 19px" type="file" size="29"

                name="File1" runat="server">

            </asp:Panel>

          </td>

        </tr>

        <tr>

          <td align="right" bgcolor="#efefef">

              <font color="#ff0000">*</font>인코딩

          </td>

          <td>

            <asp:RadioButtonList ID="rdoEncoding"

              runat="server" RepeatDirection="Horizontal">

              <asp:ListItem Value="Text" Selected="True">Text</asp:ListItem>

              <asp:ListItem Value="HTML">HTML</asp:ListItem>

              <asp:ListItem Value="Mixed">Mixed</asp:ListItem>

            </asp:RadioButtonList>

          </td>

        </tr>

        <tr>

          <td align="right" bgcolor="#efefef" style="height: 22px">

              <font color="#ff0000">*</font>비밀번호

          </td>

          <td style="height: 22px">

            <asp:TextBox ID="txtPassword" runat="server"

              BorderWidth="1px" BorderStyle="Solid"

              MaxLength="20" Width="150px" TextMode="Password"

              EnableViewState="False"></asp:TextBox>

            <font style="font-size: 9pt" color="#aaaaaa">

              (수정/삭제시에 필요)</font>&nbsp;

            <asp:RequiredFieldValidator ID="valPassword"

              runat="server" ErrorMessage="* 비밀번호를 기입해 주세요"

              ControlToValidate="txtPassword"

              Display="None" SetFocusOnError="True">

            </asp:RequiredFieldValidator>

          </td>

        </tr>

      </table>

      <p align="center">

        <asp:Button ID="btnWrite" runat="server"

          BorderWidth="1px" BorderStyle="Groove"

          Width="80px" BorderColor="#404040"

          Text="저장" OnClick="btnWrite_Click">

        </asp:Button><font face="굴림">&nbsp;</font><font

          face="굴림">&nbsp;</font><asp:Button

            ID="btnList" runat="server" BorderWidth="1px"

            BorderStyle="Groove" Width="80px"

            BorderColor="#404040" Text="리스트"

            CausesValidation="False" OnClick="btnList_Click">

          </asp:Button>

        <asp:ValidationSummary ID="valSummary"

          runat="server" ShowSummary="False"

          ShowMessageBox="True" DisplayMode="List">

        </asp:ValidationSummary>

      </p>

    </div>

  </form>

</body>

</html>


 입력 Write.aspx.CS

using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.IO;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// BoardWrite : 완성형 게시판 데이터 입력 페이지
/// </summary>

public partial class DotNetNote_BoardWrite : System.Web.UI.Page
{
  #region Private Member Variables
  private string strBaseDir = String.Empty;//파일 업로드 폴더
  private string strFileName = String.Empty;//파일명 저장 필드
  private int intFileSize = 0;//파일크기 저장 필드
  #endregion

  #region Event Handlers
  // 페이지 로드 이벤트 핸들러
  protected void Page_Load(object sender, System.EventArgs e)
  {
    // Empty
  }

  //파일 업로드 및 글쓰기 저장 로직
  protected void btnWrite_Click(object sender, System.EventArgs e)
  {
    SqlConnection objCon = new SqlConnection();
    objCon.ConnectionString =
      ConfigurationManager.ConnectionStrings[
        "ConnectionString"].ConnectionString;
    objCon.Open();

    string strName = txtName.Text.Replace("&", "&amp;").Replace(
      "<", "&lt;").Replace(">", "&gt;");
    string strTitle = txtTitle.Text.Replace("&", "&amp;").Replace(
      "<", "&lt;").Replace(">", "&gt;");

    //파일 업로드 처리 시작
    strBaseDir = Server.MapPath("./MyFiles");
    strFileName = String.Empty;
    intFileSize = 0;
    if (txtFileName.PostedFile != null)
    {
      if (txtFileName.PostedFile.FileName.Trim().Length > 0 &&
        txtFileName.PostedFile.ContentLength > 0)
      {
        strFileName = // 파일명 중복처리
          GetFilePath(strBaseDir,
            Path.GetFileName(txtFileName.PostedFile.FileName));
        intFileSize = txtFileName.PostedFile.ContentLength;
        //업로드 처리 : SaveAs()
        txtFileName.PostedFile.SaveAs(
          Path.Combine(strBaseDir, strFileName));
      }
    }//파일 업로드 처리 끝

    SqlCommand objCmd = new SqlCommand();
    objCmd.Connection = objCon;

    objCmd.CommandText = "Select Max(Ref) As MaxRef From DotNetNote";
    objCmd.CommandType = CommandType.Text;
    SqlDataReader objDr = objCmd.ExecuteReader();

    //BoardWrite.aspx에서 기본게시판과 달리
    //답변형 게시판은 Ref필드만 값을 추가하면 된다.

    int intMaxRef = 0;
    if (objDr.Read())
    {
      intMaxRef = (objDr.IsDBNull(0) ? 0 : objDr.GetInt32(0));
    }
    objDr.Close();

    objCmd.Connection.Close();//일단 연결 해제.
    objCmd.Connection.Open();//다시 연결

    objCmd.CommandText = "WriteDotNetNote";

    objCmd.Parameters.Add(
      "@Name", SqlDbType.VarChar, 25).Value = txtName.Text;
    objCmd.Parameters.Add(
      "@Email", SqlDbType.VarChar, 100).Value = txtEmail.Text;
    objCmd.Parameters.Add(
      "@Title", SqlDbType.VarChar, 150).Value = txtTitle.Text;
    objCmd.Parameters.AddWithValue(
      "@PostIP", Request.UserHostAddress);
    // 복습 차원에서 FreeTextBox 컨트롤 사용
    objCmd.Parameters.Add("@Content", SqlDbType.Text).Value =
      txtContent.Text;
    objCmd.Parameters.Add("@Password", SqlDbType.VarChar, 20).Value =
      txtPassword.Text;
    objCmd.Parameters.Add("@Encoding", SqlDbType.VarChar, 10).Value =
      rdoEncoding.SelectedItem.Text;
    objCmd.Parameters.Add("@Homepage", SqlDbType.VarChar, 100).Value =
      txtHomepage.Text;
    objCmd.Parameters.AddWithValue(
      "@Ref", intMaxRef + 1);//Ref : 참조글 번호
    objCmd.Parameters.Add(
      "@FileName", SqlDbType.VarChar, 255).Value = strFileName; ;
    objCmd.Parameters.Add(
      "@FileSize", SqlDbType.Int).Value = intFileSize;

    objCmd.CommandType = CommandType.StoredProcedure;
    objCmd.ExecuteNonQuery();

    objCon.Close();
    Response.Redirect("./BoardList.aspx");
  }

  //리스트 페이지로 이동 버튼
  protected void btnList_Click(object sender, System.EventArgs e)
  {
    Response.Redirect("./BoardList.aspx");
  }

  //파일 첨부 레이어 보이기/감추기
  protected void chkUpload_CheckedChanged(
    object sender, System.EventArgs e)
  {
    if (chkUpload.Checked)
    {
      pnlFile.Visible = true;
    }
    else
    {
      pnlFile.Visible = false;
    }
  }

  #endregion

  #region Public Methods
  #region 중복된 파일명 뒤에 번호 붙이는 메서드
  /// <summary>
  /// GetFilePath : 파일명 뒤에 번호 붙이는 메서드
  /// </summary>
  /// <param name="strBaseDirTemp">경로(c:\MyFiles)</param>
  /// <param name="strFileNameTemp">Test.txt</param>
  /// <returns>Test(1).txt</returns>
  private string GetFilePath(
    string strBaseDirTemp, string strFileNameTemp)
  {
  string strName = //순수파일명 : Test
   Path.GetFileNameWithoutExtension(strFileNameTemp);
  string strExt =  //확장자 : .txt
   Path.GetExtension(strFileNameTemp);
    bool blnExists = true;
    int i = 0;
    while (blnExists)
    {
      if (File.Exists(
        Path.Combine(strBaseDirTemp, strFileNameTemp)))
      {//Path.Combine(경로, 파일명) = 경로+파일명
        i++;
        strFileNameTemp =
          strName + "(" + i + ")" + strExt;//Test(3).txt
      }
      else
      {
        blnExists = false;
      }
    }
    return strFileNameTemp;
  }
  #endregion
  #endregion
}








반응형
posted by Magic_kit