본 예제에서는 Excel 파일등을 바이너리로 오라클 서버의 BLOB로 올라가는 것을 테스트 했습니다.
본 예제는 제가 닷넷 개발자 과정을 강의 할때 UIT의 서주현 대리님께서 작성 하신 예제 입니다...
VS .NET에서 새 프로젝트 하나 만드시구요, C# --> 웹응용 프로그램 입니다.
----------------------------
1. Webform1.aspx
----------------------------
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="File.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server" enctype="multipart/form-data">
<input id="filMyFile" type="file" runat="server" NAME="filMyFile" style="WIDTH: 416px; HEIGHT: 22px"
size="50"><br>
<input type="submit" value="쿼리 전송">
</form>
</body>
</HTML>
----------------------------
2. Webform1.aspx.cs
----------------------------
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using Oracle.DataAccess;
using Oracle.DataAccess.Types;
using Oracle.DataAccess.Client;
namespace File
{
/// <summary>
/// WebForm1에 대한 요약 설명입니다.
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.HtmlControls.HtmlInputFile filMyFile;
private void Page_Load(object sender, System.EventArgs e)
{
//HtmlInputFile 클래스에서 제공하는 프러퍼티중에서 PostedFile은
//업로드된 파일이 없다면 PostedFile은 null입니다.
//HttpPostedFile 개체는 다음과 같은 4개의 프로퍼티를 제공합니다.
//ContentLength : 업로드된 파일의 크기
//ContentType : 업로드된 파일의 MIME 타입(예 : image/gif)
//FileName : 클라이언트 컴퓨터 상에서의 업로드된 파일의 전체경로 (예 : c:tempMyPicture.gif)
//InputStream : 업로드된 데이터를 엑서스하기 위한 스트림 개체
if( filMyFile.PostedFile != null )
{
// HttpPostedFile 개체를 받아 옵니다.
HttpPostedFile myFile = filMyFile.PostedFile;
//파일 사이즈를 받아 옵니다.
int intFileLength = System.Convert.ToInt32(myFile.ContentLength);
// Ensure that there were contents to the file. Exit out of the function if there is no content.
if (intFileLength == 0)
{
return;
}
//파일 사이즈 만큼 바이트 배열을 잡는다.
byte[] myData = new byte[intFileLength];
//스트림에서 파일을 읽어 바이트 배열에 담자.
myFile.InputStream.Read(myData, 0, intFileLength);
//파일 생성
string strPath = @"C:\Temp" + Path.GetFileName(myFile.FileName);
FileStream newFile = new FileStream(strPath, FileMode.Create);
//byte 배열의 내용을 파일에 씁니다.
newFile.Write(myData, 0, myData.Length);
//파일을 닫습니다.
newFile.Close();
//Open our database connection to the table with the BLOB field
OracleConnection oConn = new OracleConnection("Data Source=UIT;User ID=system;Password=uit");
OracleDataAdapter oDA = new OracleDataAdapter("SELECT * FROM TC_FILES", oConn);
OracleCommandBuilder oCB = new OracleCommandBuilder(oDA);
DataSet ds = new DataSet();
DataRow dr;
// Fill the dataset with the schema but not the data
oDA.MissingSchemaAction = MissingSchemaAction.AddWithKey;
oConn.Open();
oDA.FillSchema(ds, SchemaType.Source, "TC_FILES");
// This may not be necessary
byte[] byteData = new byte[intFileLength];
myFile.InputStream.Read(byteData, 0, intFileLength);
// Create a new row to insert into the table
dr = ds.Tables["TC_FILES"].NewRow();
dr["FILE_ID"] = 1; // this should not be needed ... it's a sequence but will not allow nulls? so the 1 is a placeholder
dr["FILE_NAME"] = System.IO.Path.GetFileName(myFile.FileName);
dr["FILE_DATA"] = myData;
// Append the new row to the dataset
ds.Tables["TC_FILES"].Rows.Add(dr);
// Update the table using our dataset against our data adapter
oDA.Update(ds, "TC_FILES");
// Close our connection
oConn.Close();
//
// // Refresh the contents to the datagrid
// BindDataGrid(oConn, dgdFiles, "SELECT DOC_ID AS FILE_ID, FILENAME AS FILE_NAME, DBMS_LOB.GETLENGTH(DOCUMENT) AS FILE_SIZE FROM DOCUMENT FILES");
}
}
#region Web Form 디자이너에서 생성한 코드
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 이 호출은 ASP.NET Web Form 디자이너에 필요합니다.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 디자이너 지원에 필요한 메서드입니다.
/// 이 메서드의 내용을 코드 편집기로 수정하지 마십시오.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
본 예제는 제가 닷넷 개발자 과정을 강의 할때 UIT의 서주현 대리님께서 작성 하신 예제 입니다...
VS .NET에서 새 프로젝트 하나 만드시구요, C# --> 웹응용 프로그램 입니다.
----------------------------
1. Webform1.aspx
----------------------------
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="File.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server" enctype="multipart/form-data">
<input id="filMyFile" type="file" runat="server" NAME="filMyFile" style="WIDTH: 416px; HEIGHT: 22px"
size="50"><br>
<input type="submit" value="쿼리 전송">
</form>
</body>
</HTML>
----------------------------
2. Webform1.aspx.cs
----------------------------
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using Oracle.DataAccess;
using Oracle.DataAccess.Types;
using Oracle.DataAccess.Client;
namespace File
{
/// <summary>
/// WebForm1에 대한 요약 설명입니다.
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.HtmlControls.HtmlInputFile filMyFile;
private void Page_Load(object sender, System.EventArgs e)
{
//HtmlInputFile 클래스에서 제공하는 프러퍼티중에서 PostedFile은
//업로드된 파일이 없다면 PostedFile은 null입니다.
//HttpPostedFile 개체는 다음과 같은 4개의 프로퍼티를 제공합니다.
//ContentLength : 업로드된 파일의 크기
//ContentType : 업로드된 파일의 MIME 타입(예 : image/gif)
//FileName : 클라이언트 컴퓨터 상에서의 업로드된 파일의 전체경로 (예 : c:tempMyPicture.gif)
//InputStream : 업로드된 데이터를 엑서스하기 위한 스트림 개체
if( filMyFile.PostedFile != null )
{
// HttpPostedFile 개체를 받아 옵니다.
HttpPostedFile myFile = filMyFile.PostedFile;
//파일 사이즈를 받아 옵니다.
int intFileLength = System.Convert.ToInt32(myFile.ContentLength);
// Ensure that there were contents to the file. Exit out of the function if there is no content.
if (intFileLength == 0)
{
return;
}
//파일 사이즈 만큼 바이트 배열을 잡는다.
byte[] myData = new byte[intFileLength];
//스트림에서 파일을 읽어 바이트 배열에 담자.
myFile.InputStream.Read(myData, 0, intFileLength);
//파일 생성
string strPath = @"C:\Temp" + Path.GetFileName(myFile.FileName);
FileStream newFile = new FileStream(strPath, FileMode.Create);
//byte 배열의 내용을 파일에 씁니다.
newFile.Write(myData, 0, myData.Length);
//파일을 닫습니다.
newFile.Close();
//Open our database connection to the table with the BLOB field
OracleConnection oConn = new OracleConnection("Data Source=UIT;User ID=system;Password=uit");
OracleDataAdapter oDA = new OracleDataAdapter("SELECT * FROM TC_FILES", oConn);
OracleCommandBuilder oCB = new OracleCommandBuilder(oDA);
DataSet ds = new DataSet();
DataRow dr;
// Fill the dataset with the schema but not the data
oDA.MissingSchemaAction = MissingSchemaAction.AddWithKey;
oConn.Open();
oDA.FillSchema(ds, SchemaType.Source, "TC_FILES");
// This may not be necessary
byte[] byteData = new byte[intFileLength];
myFile.InputStream.Read(byteData, 0, intFileLength);
// Create a new row to insert into the table
dr = ds.Tables["TC_FILES"].NewRow();
dr["FILE_ID"] = 1; // this should not be needed ... it's a sequence but will not allow nulls? so the 1 is a placeholder
dr["FILE_NAME"] = System.IO.Path.GetFileName(myFile.FileName);
dr["FILE_DATA"] = myData;
// Append the new row to the dataset
ds.Tables["TC_FILES"].Rows.Add(dr);
// Update the table using our dataset against our data adapter
oDA.Update(ds, "TC_FILES");
// Close our connection
oConn.Close();
//
// // Refresh the contents to the datagrid
// BindDataGrid(oConn, dgdFiles, "SELECT DOC_ID AS FILE_ID, FILENAME AS FILE_NAME, DBMS_LOB.GETLENGTH(DOCUMENT) AS FILE_SIZE FROM DOCUMENT FILES");
}
}
#region Web Form 디자이너에서 생성한 코드
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 이 호출은 ASP.NET Web Form 디자이너에 필요합니다.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 디자이너 지원에 필요한 메서드입니다.
/// 이 메서드의 내용을 코드 편집기로 수정하지 마십시오.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
[100%환급,실무전문]SQL/빅데이터/자바/스프링/웹퍼블리싱/안드… | 12-27 | 2810 | ||
[채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… | 12-11 | 2043 | ||
53 | [평일100%환급7건]웹퍼블리싱,자바&JSP,안드로이드,C#닷넷,SQL기… | 03-15 | 1867 | |
52 | [주말]C#,ASP.NET마스터 | 01-31 | 2024 | |
51 | [기업100%환급,평일주간]SQL기초에서스키마오브젝트,PLSQL,힌트… | 01-31 | 2988 | |
50 | [주말주간]자바&웹,jQUERY,스프링프레임워크,마이바티스 | 01-31 | 1560 | |
49 | [평일주간/야간,주말주간/야간]Spring,MyBatis,Hibernate개발자… | 01-19 | 1882 | |
48 | [평일주간/야간,주말주간/야간]안드로이드개발자과정(Adnroid 교… | 01-11 | 1756 | |
47 | [평일야간,주말주간야간]JAVA,Network&JSP&Spring,MyBatis,Hiber… | 01-03 | 2332 | |
46 | [100%환급,실무전문]SQL/빅데이터/자바/스프링/웹퍼블리싱/안드… | 12-27 | 2810 | |
45 | [주말야간]개발자를위한PLSQL,SQL튜닝,힌트(토/일) | 12-19 | 1969 | |
44 | [평일주간/야간,주말주간/야간]웹퍼블리싱 마스터(HTML5,CSS3,jQ… | 12-14 | 1949 | |
43 | [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… | 12-11 | 2043 | |
42 | [주말야간]JAVA,JSP,Spring,PLSQL,힌트,웹퍼블리싱,안드로이드,… | 12-09 | 1589 | |
41 | [평일야간,주말야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 | 12-01 | 1813 | |
40 | [기업100%환급]오라클&자바웹스프링신입과정3주(SQL,JAVA,JSP,Se… | 12-01 | 2039 | |
39 | [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) | 12-01 | 1465 |
댓글 없음:
댓글 쓰기