ASP.NETではHTMLコントロールFileでマルチファイルアップロード

6911 ワード

asp.Netではサーバコントロールに慣れていると、逆にwebで最も一般的なgetとpostフォームの使い方を忘れてしまいます.
今回、プロジェクトで問題が発生しました.ユーザーはfileuploadコントロールを動的に追加してマルチファイルアップロードを実現する必要があります.
サーバ側コントロールfileuploadでは実現しにくい.
そこで1時間かけて復習し、正常なwebフォームを提出し、体験を記録しました.もちろん、達人は
直接無視します.ほほほ
1、ページPOSTとGETを取得する3つの方法.
     
     Request.Form[name]POST受信方式
     Request.QueryString[name]GET受信方式
Request["name"]POSTもGETも可能
ここで注意してください.ページがcheckboxグループであれば、valueがカンマで区切られたチェックボックスが受信されます.
2、ファイルのアップロード
ここでは、HTMLコントロールのファイルでアップロードするのが特別なので、私が作ったマルチファイルアップロードの例です.
まずJQUERYを導入
<script type="text/javascript">
        function addFileControl() {
            var fileControlString = '<input name="File1" type="file" /><br />';
            $("#fileArea").append(fileControlString);
        }
    </script>

ページコード:(ここのformにはrunat=「server」はありません.enctype=「multipart/form-data」が必要です.)
<form id="formFileUpload" method="post" action="MiniFileUpload.aspx?type=upload" enctype="multipart/form-data">
    <div id="fileArea">
        <input name="File1" type="file" /><br />
    </div>
    <input type="button" value="  " id="btnAddUpload" onclick="addFileControl();" />
    <input type="submit" value="  " />
    </form>

楽屋csコードは以下の通りです:(ここではページのすべてのfileアップロードコントロールを巡り、ページにアップロードコントロールが1つしかない場合は、実際に使用できます.
HttpPostedFile f = Request.Files["name"];

)のように取得しました.
private void fileUploadEvent()
        {
            HttpFileCollection fileCollection = Request.Files;
            int filesCount = fileCollection.Count;
            for (int i = 0; i < filesCount; i++)
            {
                HttpPostedFile file = fileCollection[i];
                if (!string.IsNullOrEmpty(file.FileName))
                {
                    if (file.FileName.LastIndexOf("\\") != -1)
                    {
                        string fileName = file.FileName.Substring(file.FileName.LastIndexOf("\\") + 1);//   file.FileName             
                        if (fileName.LastIndexOf(".") != -1)
                        {
                            string fileNameExtend = fileName.Substring(fileName.LastIndexOf("."));
                            if (fileNameExtend == ".txt")
                            {
                                string savePath = AppDomain.CurrentDomain.BaseDirectory + "filesUpload\\" + fileName;
                                file.SaveAs(savePath);
                            }
                        }
                        Response.Write(fileName + "<br/>");
                    }
                }
            }
        }