FileUploadコントロールを用いてファイルや画像をアップロードする - アップローダーの作成 - ASP.NET

FileUploadコントロールを用いてファイルをアップロードします。

プログラム

UI

下図のフォームを設計します。
フォームにFileUploadコントロールとButtonコントロールを配置します。


コード

アップロードボタンのClickイベントにコードを記述します。

アップロードしたファイルをファイルとして配置する場合

FileUpload.SaveAs()メソッドを用いることでアップロードされたファイルをファイルシステムに保存できます。
protected void Button_Upload_Click(object sender, EventArgs e)
{
  try {
    //CurrentDirPath はserver.MapPath()などでディレクトリ位置を取得する。
    FileUpload1.SaveAs(CurrentDirPath + "/" + FileUpload1.FileName);
  }
  catch (UnauthorizedAccessException ex) {
   //例外処理
  }
  catch (IOException ex) {
   //例外処理
  }
}

アップロードしたファイル(画像)をデータベースに挿入する場合

この例ではデータベースのFigureテーブルに挿入します。
FileUpload.FileBytesプロパティを用いることでアップロードされた画像のバイナリ情報(byte[](バイト配列))を取得できます。
また、FileUploadに入力されたファイル名はFileUpload.FileNameプロパティで取得できます。
protected void Button_Upload_Click(object sender, EventArgs e)
{
  sqlstr = "INSERT INTO Figure (FigureID, FigureData) VALUES (@fid,@photo)";
  SqlCommand com = new SqlCommand(sqlstr, con);

  SqlParameter param = com.CreateParameter();
  param.ParameterName = "@photo";
  param.SqlDbType = SqlDbType.VarBinary; //param.SqlDbType = SqlDbType.Image; でも可
  param.Direction = ParameterDirection.Input;
  param.Value = FileUpload1.FileBytes;
  com.Parameters.Add(param);

  param = com.CreateParameter();
  param.ParameterName = "fid";
  param.SqlDbType = SqlDbType.Int;
  param.Direction = ParameterDirection.Input;
  param.Value = fid;
  com.Parameters.Add(param);

  try
  {
    int rows = com.ExecuteNonQuery();
  }
  catch (SqlException oops)
  {
    Response.Write(oops.ToString());
  }
  finally
  {
    com.Dispose();
    con.Close();
    con.Dispose();
  }
}


著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2010-05-12
iPentec all rights reserverd.