ファイルアップロードコントロールFileuplad(ファイルアップロードを実現し、データベースに書き込む)
8993 ワード
まず、Fileupladというファイルのコントロールアップロードのいくつかの大失敗を説明します.
1.アップロード後はF 5で更新し、繰り返し提出する
2.提出後に後退ボタンを押してFileupladの中の情報はまだあります.
3.マルチファイルアップロードはサポートされていません.
4.アップロード前にファイルサイズを検出できません.
解決方法:
1.iframeをサブページで実現またはリダイレクト文(Request.RawUrl)を作成する.)
2.JavaScript文でfileupladのval情報をクリアする
4.jsコードを利用する:fileuplad.files[0].sizeコードで解決するが、ブラウザでhtml 5をサポートする必要がある.
また、デフォルトのアップロードファイルの最大値を変更する場合、アップロード時間はweb.co nfigファイルで変更する必要があります.
以下はiframeを利用してファイルをアップロードしてデータベースに書き込むルーチンです.
iframe.aspx
1.アップロード後はF 5で更新し、繰り返し提出する
2.提出後に後退ボタンを押してFileupladの中の情報はまだあります.
3.マルチファイルアップロードはサポートされていません.
4.アップロード前にファイルサイズを検出できません.
解決方法:
1.iframeをサブページで実現またはリダイレクト文(Request.RawUrl)を作成する.)
2.JavaScript文でfileupladのval情報をクリアする
4.jsコードを利用する:fileuplad.files[0].sizeコードで解決するが、ブラウザでhtml 5をサポートする必要がある.
また、デフォルトのアップロードファイルの最大値を変更する場合、アップロード時間はweb.co nfigファイルで変更する必要があります.
iframe.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="iframe_upload.aspx.cs" Inherits="uploadfiles_iframe_upload" %>
<!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>
<h2>upload </h2>
<iframe frameborder="0" width="100%" src="i_upload.aspx"></iframe>
</div>
</form>
</body>
</html>
i_upload.aspx<%@ Page Language="C#" AutoEventWireup="true" CodeFile="i_upload.aspx.cs" Inherits="uploadfiles_iframe_upload" %>
<!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">
<script src="../jquery-1.11.3.min.js" type="text/javascript"></script>
<title></title>
<script type="text/javascript">
$(document).ready(function () {
$("#fup1").val(""); // fileupload val
});
function checkdata() {
if ($("#fup1").val() == "") {
alert(" ");
$("#fup1").focus(); // fileupload
return false;
}
var _file = document.getElementById("fup1"); // ID
var _size = _file.files[0].size; //
if (_size > 4000000) {
alert(" ");
$("#fup1").focus();
return false;
}
return true;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:FileUpload ID="fup1" runat="server" />
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" OnClientClick="return checkdata()" />
</div>
</form>
</body>
</html>
i_uplload.aspx.csusing System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class uploadfiles_iframe_upload : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
Session["_tempFiles"] = fup1.PostedFile; // session
Response.Redirect("i_info.aspx"); // i_info
}
}
i_info.aspx<%@ Page Language="C#" AutoEventWireup="true" CodeFile="i_info.aspx.cs" Inherits="uploadfiles_iframe_upload" %>
<!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>
title:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
fc_id:<asp:Label ID="lb_fcid" runat="server" Text="Label"></asp:Label><br/>
fc_name:<asp:Label ID="lb_fcname" runat="server" Text="Label"></asp:Label><br/>
targDir:<asp:Label ID="lb_tdir" runat="server" Text="Label"></asp:Label><br/>
targPath:<asp:Label ID="lb_fcpath" runat="server" Text="Label"></asp:Label><br />
</div>
<asp:Button ID="Button1" runat="server" Text=" " onclick="Button1_Click" />
</form>
</body>
</html>
i_info.aspx.csusing System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Data.OleDb;
public partial class uploadfiles_iframe_upload : System.Web.UI.Page
{
string str_cnn = "Provider=MicroSoft.Jet.OLEDB.4.0;Data Source=";
string str_sourcefile = "~/uploadfiles/data.mdb";
OleDbCommand cmd;
OleDbConnection cnn;
OleDbDataReader deter;
string str_sql;
protected void Page_Load(object sender, EventArgs e)
{
if (Session["_tempFiles"] == null)
{
Response.Redirect("i_upload.aspx");
}
HttpPostedFile _myfiles = (HttpPostedFile)Session["_tempFiles"]; // session, _myfiles
string _ext = Path.GetExtension(_myfiles.FileName).ToLower(); // ,
string str_conn = str_cnn + MapPath(str_sourcefile);
cnn = new OleDbConnection(str_conn);
cnn.Open();
//
lb_fcid.Text = "1";
lb_fcname.Text = " ";
lb_tdir.Text = "~/uploadfiles/ ";
str_sql = "SELECT * FROM T_FILE WHERE fc_ext like '%" + _ext + "%'";//
cmd = new OleDbCommand(str_sql, cnn);
deter = cmd.ExecuteReader();
<span style="white-space:pre"> </span>//
while (deter.Read())
{
lb_fcid.Text = deter["ID"].ToString();
lb_fcname.Text = deter["fc_name"].ToString();
lb_tdir.Text = deter["fc_path"].ToString();
}
TextBox1.Text = _myfiles.FileName.ToString();
lb_fcpath.Text = MapPath(lb_tdir.Text) + DateTime.Now.ToOADate() + _ext; //
cnn.Close();
}
protected void Button1_Click(object sender, EventArgs e)
{
string _targPath = lb_fcpath.Text;
string _targDir = lb_tdir.Text;
try
{
Directory.CreateDirectory(MapPath(_targDir)); // ,
((HttpPostedFile)Session["_tempfiles"]).SaveAs(_targPath);//
}
catch { }
if (File.Exists(_targPath))
{
string _fname, _fcid, _title;
_fname = Path.GetFileName(lb_fcpath.Text);
_fcid = lb_fcid.Text;
_title = TextBox1.Text;
string str_conn = str_cnn + MapPath(str_sourcefile);
cnn = new OleDbConnection(str_conn);
cnn.Open();
<span style="white-space:pre"> </span>//
str_sql = "INSERT INTO T_FILEINFO(f_name,f_path) values "+"('"+_fname+"','"+_title+"')";
cmd = new OleDbCommand(str_sql, cnn);
int i = cmd.ExecuteNonQuery();
cnn.Close();
if (i > 0)
{
Session.Remove("_tempfiles");// session
Response.Redirect("i_down.aspx");
}
}
}
}
i_down.aspx<%@ Page Language="C#" AutoEventWireup="true" CodeFile="i_down.aspx.cs" Inherits="uploadfiles_iframe_upload" %>
<!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>
<p> </p>
<p>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/uploadfiles/i_upload.aspx"> </asp:HyperLink>
</p>
</div>
</form>
</body>
</html>