アップロードの心得


私たちはバックグラウンド管理ページを作るとき、通常は一つのファイルをアップロードしますが、複数のページをアップロードする場合、一つずつアップロードコードを作りに行きますか?あなたがまだいるなら、oh shit!
私の考えはアップロード機能のページを作り、iframeで現在のアップロードページを入れ子にし、アップロードページでアップロード成功時にアップロードされるurlをjavascriptでwindow.opennerオブジェクトページの値を通知することです.
htmlページは以下の通りです.File_Upload
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>     </title>
</head>

<body><iframe src="Yeml_File_Upload.aspx" width="100%" height="30" frameborder="0">
                    </iframe>
</body>
</html>
 
.aspx
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>    </title>
</head>
<body>
    <form id="form1" runat="server">
    <!--    
        author:       
        createTime:2013-08-08
        descript:    ,                     ,  window.opener          。
              upladSucess(upoad_url)  ,    parent          upoad_url。
    -->
    <asp:FileUpload ID="file_upload" runat="server" />
    <asp:Button ID="btn_upload" runat="server" Text="  " OnClick="btn_upload_Click" />
    <input type="hidden" id="hidd_upoad_url" runat="server" />
    </form>
</body>
</html>
 protected void btn_upload_Click(object sender, EventArgs e)
        {
            // String path = Server.MapPath("~/UploadedImages/");
            if (file_upload.HasFile)
            {
                bool fileOK = false;
                String fileExtension = Path.GetExtension(file_upload.FileName).ToLower();
                String[] allowedExtensions = { ".gif", ".png", ".jpeg", ".jpg" };
                for (int i = 0; i < allowedExtensions.Length; i++)
                {
                    if (fileExtension == allowedExtensions[i])
                    {
                        fileOK = true;
                    }
                }
                if (!fileOK)
                {

                    return;
                }
                string path = string.Format("/UploadImages/jhrz_images/{0}/", DateTime.Now.ToString("yyyyMMdd"));
                if (!Directory.Exists(Server.MapPath("~" + path)))
                    Directory.CreateDirectory(Server.MapPath("~" + path));
                string file_name = string.Format("{0}{1}{2}", path, Guid.NewGuid(), fileExtension);
                file_upload.SaveAs(Server.MapPath(file_name));
                hidd_upoad_url.Value = file_name;
                ClientScript.RegisterStartupScript(GetType(), "upload_success", "<script type='text/javascript'>parent.upladSucess('" + file_name + "');</script>", false);
            }
        }
例えば1. 
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>     </title>
<script type="text/javascript">
/**
*      callback
*/
function upladSucess(img_url) {

   // alert(img_url);
    document.getElementById("img1").setAttribute("src",img_url);
}

</script>
</head>

<body>
<img id="img1" src="" />
<iframe src="Yeml_File_Upload.aspx" width="100%" height="30" frameborder="0">
                    </iframe>
</body>
</html>
残りは2.html、3.htmlがあれば、***.aspxはファイルをアップロードする必要がある時、私達は各ページで書き直すだけです.
/**
*      callback
*/
function upladSucess(img_url) {

   // alert(img_url);
    document.getElementById("img1").setAttribute("src",img_url);
}
私たちのページの割り当て操作をロジックにすればいいです.