form表单中的enctype="multipartform-data"什么意思

form表单中的enctype="multipartform-data"什么意思,第1张

enctype就是encodetype就是编码类型的意思。

multipart/form-data是指表单数据有多部分构成,既有文本数据,又有文件等二进制数据的意思。

需要注意的是:默认情况下,enctype的值是application/x->

application/x->

扩展资料:

一、关于HTML <form> 标签的 enctype 属性

application/x->

multipart/form-data:    不对字符编码,或在使用包含文件上传控件的表单时,必须使用该值。

text/plain:空格转换为 "+" 加号,但不对特殊字符编码。 

二、enctype:规定了form表单在发送到服务器时候编码方式,有如下的三个值。

1、application/x->

2、multipart/form-data 。 指定传输数据为二进制类型,比如、mp3、文件。

3、text/plain。纯文体的传输。空格转换为 “+” 加号,但不对特殊字符编码。

首先先说一个html5中表单新增的一个功能,在我们之前的html中,表单元素必须放在form元素所包含的里面,在html5中,可以把他们写在页面上的任何一个地方,然后给该元素增加一个form属性,form属性的值为form表单的id,如下:

[html] view plain copy

<form method="get" id="test">

<input type="text" name="name"/>  

<input type="password" name="password"/>

<input type="submit" value="提交">

</form>

<input type="text" name="confirm" form="test">

在form元素里面的表单元素可以不用添加form属性,如果你想利用form获取所有表单元素的值,那么在form元素外面的表单元素就必须添加form属性,input、select、textarea等元素都满足该功能。

接下来开始介绍html5新增的表单元素,所有例子均用谷歌浏览器展示。

新增表单元素

email:提交表单的时候验证输入值是否满足email的格式

<input type="email" name="email"/>

url:提交表单的时候验证输入值是否满足url的格式

<input type="url" name="url"/>

number:根据你的设置提供选择数字的功能,其中min为最小值,max为最大值,value为默认值,step为点击箭头时数字的变化量,max、min、step、value均可不写,目前某些浏览器还不支持。

<input type="number" name="number" min=2 max=100 step=5 value="15"/>

range:会以一个滑块的形式表现包含一定范围内数字值的输入域,max为最大值,min为最小值,value为默认值,如果没有设置max和min,默认值是1-100

<input type="range" name="range" min=20 max=200 value="60"/>

日期和时间类型:

date:选取日、月、年

<input type="date" name="date"/>

month:选取月、年

<input type="month" name="month"/>

week:选取周、年

<input type="week" name="week"/>

time:选取小时、分钟

<input type="time" name="time"/>

datetime:选取时间、日、月、年(UTC时间)(我这里浏览器显示不出效果)

<input type="datetime" name="datetime"/>

datetime-local:选取时间、日、月、年(本地时间)

<input type="datetime-local" name="datetime-local"/>

search:用于搜索域,若加上result="s"属性,则会在搜索框前面加一个搜索图标(我这里浏览器显示不出效果)

<input type="search" name="search" result="s"/>

tel:验证输入的是否是电话号码的格式(我这里浏览器显示不出效果)

<input type="tel" name="tel" />

color:color类型会提供颜色拾取器,供用户选择颜色,并将用户选择的颜色填充到此元素中

<input type="color" name="color"/>

新增input属性(部分容易理解的就不进行代码演示了),后面为支持该属性的元素

autofocus:在打开页面时使元素自动获取焦点                                             //input,button,select,textarea

placeholder: 在用户输入时进行提示                                                                // input,textarea

form:这篇文章的开头就有这个属性,它用于表明元素属于哪个表单,无论元素的位置在哪里,所属表单都能获取该元素的值                              //input,output,button,select,textarea,fieldset

required:表明该元素是必填项,当提交表单的时候会自动验证该元素的内容是否不为空          //input,textarea

max/min/step:限制值的输入范围,以及值的变化程度。上面的新增number元素有介绍。        //input

autocomplete:使form元素或者input元素拥有自动完成功能,既记录用户之前输入的值,关闭为off,默认为on。                            //form,input

表单重写属性:                      //input

formaction:重写表单的action属性  

formenctype:重写表单的enctype属性。

enctype属性管理的是表单的MIME编码,MIME就是一种电子邮件传输的互联网标准,表明传递的信息类型和编码,共有三个值可选:

1,application/x->

2,multipart/form-data,指定传输数据的特殊类型,主要就是上传的非文本内容,比如文件、。

3,text/plain,纯文本传输。

formmethod: 重写表单的method属性

formnovalidate:重写表单的novalidate属性

formtarget:重写表单的target属性。

比如:

[html] view plain copy

<form action="testhtml" method="get" autocomplete="on">

姓名: <input type="text" name="name" /><br />

密码: <input type="password" name="pwd" /><br />

<input type="submit" formnovalidate="true" value="提交未经验证"/>

</form>

multiple:规定输入字段可选择多个值                    //input,select

list:list属性的值为datalist元素的id,datalist元素类似于选择框,在文本框获得焦点的时候以提示输入的方式显示。如下:

[html] view plain copy

姓名:<input type="text" name="name" list="name"/>

<datalist id="name" >

<option value="zhangsan">张三</option>

<option value="lisi">李四</option>

<option value-"wanger">王二</option>

</datalist>

pattern:验证input输入域的格式,即正则表达式。

<input type="text" name="name" pattern="[A-z0-9]{8}"/>

这是Form1中的字段和事件

public static string StuNumber;

public static string StuName;

public static string ScoreComputer;

public static string ScoreLanguage;

public static string ScoreHighMath;

public static string ScorePeaceTime;

private void button1_Click(object sender, EventArgs e)

{

StuNumber = thistxtStuNumberText;

StuName= thistxtStuNameText;

ScoreComputer = thistxtScoreComputerText;

ScoreLanguage= thistxtScoreLanguageText;

ScoreHighMath = thistxtScoreHighMathText;

ScorePeaceTime= thistxtScorePeaceTimeText;

Form2 myForm2 = new Form2();

myForm2Show();

}

Form2中的

private void btnOK_Click(object sender, EventArgs e)

{

thistxtStuNumberText = Form1StuNumber;

thistxtStuNameText = Form1StuName;

thistxtScoreComputerText = Form1ScoreComputer;

thistxtScoreLanguageText = Form1ScoreLanguage;

thistxtScoreHighMathText = Form1ScoreHighMath;

thistxtScorePeaceTimeText = Form1ScorePeaceTime;

double d = ConvertToInt32(txtScoreComputerText)  02 + ConvertToInt32(txtScoreLanguageText)  02

+ ConvertToInt32(txtScoreHighMathText)  02 + ConvertToInt32(txtScorePeaceTimeText)04;

if (d > 85)

{

thislblRankText = "A";

}

else if (d > 70)

{

thislblRankText = "B";

}

else

{

thislblRankText = "C";

}

}

这里需要数据验证,这里我不验证了啊

这个代码意思就是静态变量传值,那个combobox我没用,应该就是叫你选择的,有好多门课的成绩,可以通过combobox选这些门课,再输入成绩的吧,或者是学号的选择,总之combobox里面可以有个集合可以选择,也可以写,我也是初学者,希望谅解!!!

这个是前端html代码

这个是后台php代码

其中 ,你需要在前端那里选择你的数据提交方式,我这里选择的是post,还有就是你数据提交的目的地,也就是你接受数据的后台程序,就那个action里面的值,在这里  ,我就先说一下怎么接收,至于里面的检验数据提交 *** 作的,可以等以后这个会了在研究。

然后你需要给需要提交的数据设置类型,例如上面的text还有就是名字例如user_login,这个用于接收的时候对号入座。当你点击submit的时候,你的数据就被传送到了那个相对应的php程序那里,我这里是loginphp,那么现在就可以在php程序里面接受了。

定义user_login变量来接受用户输入的user_login的那个值,对于post方式提交的数据,有一个固定的格式就是$_post['接受的name值']

具体你可以好好看看这个程序,这是很久以前写的了。

赠人玫瑰手有余香

form表单提交后,一般会d出提交成功的字样,如果没有d出,那么很有可能没有提交成功。

form表单提交失败主要有两种原因,一种原因是网路中断和伺服器故障等意外,因为这些意外都会导致伺服器端无法处理提交。第二种是验证失败、资料不全、权限设置,这些也会导致表格无法提交。

如果是第一种原因,可以使用 AJAX 去检测,或者可以不作理会,只要用户刷新就能正常提交。如果是第二种原因,一般都要在伺服器实际 *** 作,这样很难进行表格提交,建议对form先进行重装。

form可以理解前台数据,如果真的想知道是否提交表格成功,那么还可以借助php,php可以理解为负责处理提交表格的后台。因此,要想最快知道是否提交form成功,最好就是查询php的数据。

第一种:经典的form和input上传。

设置form的aciton为后端页面,enctype="multipart/form-data",type=‘post’

<form action=';

使用input选择文件,设置好其他input的值,点击提交,将文件数据及签名等认证信息发送到form设置的action对应的页面,浏览器也会跳转到该页面。触发form表单提交数据的方式有2种,一种是在页面上点击button按钮或<input

type='submit'>按钮触发,第二种是在js中执行formsubmit()方法。

优点:使用简单方便,兼容性好,基本所有浏览器都支持。

缺点:1 提交数据后页面会跳转(下面会讲如何禁止页面跳转)。

2因为是浏览器发起的请求,不是一个ajax,所以前端无法知道什么时候上传结束。

3 form表单里发送除文件外的数据,一般是新建一个type=hidden的input,value=‘需要传的数据’,每发送一个数据就需要一个input,一旦多了就会使得dom看起来比较冗余。

小技巧:

form表单提交数据后会自动跳转到action指定的页面,为了禁止页面跳转,可以在页面中新建一个空的ifame,比如name='upload',然后设置form的target="Uploader",form有一个target的属性,规定在何处打开action,这样form提交数据后就会仍停留在当前页。代码如下:

<form action=';

这样写的另一个好处是,可以知道什么时候上传完成并接收到后端的回调结果。比如上面这个例子,文件数据发送到了

'uploadFilephp',假设该页面处理完数据后返回了一个地址,该地址会被写入到之前的iframe中。所以在ifame的onload函数触发时,也就是上传完成后,可以在iframe中读取到后端返回的数据。

var  iframe = documentgetElementById('upload1');

iframeonload = function () {  

                    var doc = windowframes['uploader1']document;                    var pre = docgetElementsByTagName('pre');                    var obj = JSONparse(pre[0]innerHTML);

                }

使用这种方法时需要注意,iframe有跨域限制,创建出来的iframe的地址如果和当前页面地址不同源,会报错。这种情况下,建议大家在iframe的onload函数中,再次向后端请求一个接口获取文件地址,而不是直接去iframe里读取。或者返回这样的数据。

<script type="text/javascript">windowtopwindow[callback](data)</script>

callback是和前端约定好的名字,上传完成后触发该函数并返回后端数据。

第二种:使用formData上传。

用js构造form表单的数据,简单高效,但最低只兼容IE10,所以需要兼容IE9的童鞋们就略过这个方法吧。

html:

<input type='file'>

js:

var formData = new FormData();

formDataappend("userid", userid);

formDataappend("signature", signature);

formDataappend("file", file); //file是blob数据//再用ajax发送formData到服务器即可,

注意一定要是post方式上传

说明:第一种方法提到了创建多个type=‘hidden’的input来发送签名数据,这儿可以用formDataappend方法来代替该 *** 作,避免了dom中有多个input的情况出现。最后将file数据也append到formData发送到服务器即可完成上传。

优点:由于这种方式是ajax上传,可以准确知道什么时候上传完成,也可以方便地接收到回调数据。

缺点:兼容性差

第三种:使用fileReader读取文件数据进行上传。

HTML5的新api,兼容性也不是特别好,只兼容到了IE10。

var fr = new FileReader();

                frreadAsDataURL(file);

                fronload = function (event) {                    var data= eventtargetresult; //此处获得的data是base64格式的数据                    imgsrc = data;

                    ajax(url,{data} ,function(){})

                }

上面获得的data可以用来实现上传前的本地预览,也可以用来发送base64数据给后端然后返回该数据块对应的地址。

优点: 同第二种

缺点:一次性发送大量的base64数据会导致浏览器卡顿,服务器端接收这样的数据可能也会出现问题。

你说的是action层获取form表单提交上来的数据吗?

提供一种方法:

控制层相关代码:requestgetParameter("userName");

(注:userName是from表单中name属性的值)

jsp页面中form表单相关代码:

以上就是关于form表单中的enctype="multipart/form-data"什么意思全部的内容,包括:form表单中的enctype="multipart/form-data"什么意思、HTML5 新增加了哪些表单元素、C# form2如何用form1中的数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10147774.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存