原文:https://www.cnblogs.com/huatao/p/4727398.html
https://www.cnblogs.com/weiweithe/p/4363458.html
表单multipart/form-data与x-www-form-urlencoded区别
multipart/form-data:既可以上传文件等二进制数据,也可以上传表单键值对,只是最后会转化为一条信息;
x-www-form-urlencoded:只能上传键值对,并且键值对都是间隔分开的。
一、前端代码
@using (Html.BeginForm("UploadFile", "Home", FormMethod.Post, new {enctype = "multipart/form-data"}))
{
<div>文件上传:<input type="file"/></div>
<input type="submit" value="提交"/>
}
     //类似的使用easyui
     @using (Html.BeginForm("UploadFile", "Home", FormMethod.Post, new {enctype = "multipart/form-data"}))
        {
            <div>
                <input 
                       data-options="label:\'签字文件:\',required:true,buttonText:\'选择文件\',prompt:\'仅支持图片、xls、doc和docx格式\',onChange:function(){checkFile(2)}"/>
               </div>
     }
//编写JS方法checkFile()验证文件格式
function checkFile(a) //检查文件
{
    var fileTypes = [\'.jpg\', \'.jpeg\', \'.bmp\', \'.png\', \'.gif\', \'psd\', \'.rar\', \'.zip\', \'.doc\', \'.docx\', \'wps\', \'.xls\', \'.xlsx\', \'.txt\', \'.pdf\'];
    var filePath;
    if (a === 1)
        filePath = window.$(\'#txtSignPhoto\').textbox(\'getValue\');
    if (filePath !== \'\') {
        var flag = false;
        var fileType = filePath.substring(filePath.lastIndexOf("."));
        if (fileTypes.length > 0) {
            for (var i = 0; i < fileTypes.length; i++) {
                if (fileTypes[i] === fileType) {
                    flag = true;
                    break;
                }
            }
        }
        if (!flag) {
            alert(\'不接受\' + fileType + \'文件类型上传\');
            if (a === 1)
                window.$(\'#UploadFile\').textbox(\'setValue\', \'\');          
            return;
        }
    }
}
以及表单的2种写法:
<form method="post" action="~/Areas/seal/Views/register/Index.cshtml" enctype="multipart/form-data">

