人気ブログランキング | 話題のタグを見る
ファイルのアップロード処理
ファイルのアップロード処理をするためのASP.NETページのソースは、次のようになります。
(VS.NETが生成するタグそのままなので、多少ごちゃごちゃしています)

<P>ファイルを指定して下さい。</P>
<P><asp:requiredfieldvalidator id="UploadFileValidator" runat="server" ControlToValidate="UploadImage" ErrorMessage="※ファイルを指定して下さい!"></asp:requiredfieldvalidator><BR>
<INPUT id="UploadFile" style="WIDTH: 336px; HEIGHT: 22px" type="file" size="36" runat="server"></P>
<P><asp:Button id="UploadButton" runat="server" Text="アップロード"></asp:Button></P>

ファイルのアップロード処理_a0002261_17461565.jpg<INPUT id="UploadFile" ... type="file" ... runat="server"> と言うのが、HTMLサーバーコントロールの File Field コントロールです。
通常のHTMLの、Inputタグの type="file" と同じように見えますが、 runat="server" という属性が付いています。これは、HTML要素をサーバー上でASP.NETからアクセスできるようにするためのおまじないです。IDEからは、コントロールの右クリックで、「サーバーコントロールとして実行」を選択すると、runat="server" が付きます。

で、C#コードの方は、

private void NextButton_Click(object sender, System.EventArgs e)
{
 if(UploadImage.PostedFile.ContentType.CompareTo("image/jpeg") == 0
 || UploadImage.PostedFile.ContentType.CompareTo("image/pjpeg") == 0)
 {
  // JPEG画像をファイルに保存してみる
  UploadImage.PostedFile.SaveAs(Request.MapPath("uploaded_image.jpg"));
 }
 else
 {
  UploadImageValidator.Text = "未対応のファイル形式です:" + UploadImage.PostedFile.ContentType + "><BR>" + UploadImage.PostedFile.FileName;
  UploadImageValidator.IsValid = false;
 }
}

となります。

Jpeg画像をアップロードすると、なぜか、ContentTypeが"image/pjpeg"で送られてきます(ie6sp2 / WinXPsp2)。
で、アップロードされた画像がJPEGらしかった(mimeタイプで判断)ら、この例では、そのまま画像ファイルとして保存しています。

UploadImage.PostedFile.InputStream プロパティで、 System.IO.Stream オブジェクトを取得も出来るので、もうやりたい放題ですね。
ASPの時代には標準では無かった便利機能です。
ソニーストア

by isoq | 2005-01-04 17:48 | Web
<< DSC-M1が欲しいんです! だらけもの >>