1. form表单上传文件超时
1、客户在商户网站浏览商品信息,签订订单;
2、商户按照工行B2C订单数据规范形成提交数据,并使用工行提供API和商户证书对订单数据签名,形成form表单返回客户浏览器,表单action地址指向工行接收商户B2C订单信息的servlet;
3、客户确认使用工行支付后,提交此表单到工行;
4、工行网银系统接收此笔B2C订单,对订单信息和商户信息进行检查,通过检查则显示工行B2C支付页面;
5、客户在此页面可以查询客户在银行的预留信息;也可以输入支付卡号、支付密码、验证码进行B2C支付;
6、工行检查客户信息,通过检查后显示确认页面;客户确认提交后工行进行支付指令处理;
7、工行进行支付指令处理后,如果商户需要工行实时通知,则工行将处理结果使用http协议post方式将通知消息数据提交到商户网站(这个接收银行通知消息的商户端地址是随商户订单数据提交银行的merURL字段),商户返回取货地址或关闭这个银行与其建立的连接后,银行才显示交易结果页面给客户。(注意1、发送通知和显示结果页面是串行的,所以商户端接收银行通知处理时间太长可能导致客户等待超时,造成银行不能将交易结果页面显示给客户。2、此连接是银行服务器自动和商户进行的连接,商户返回也是直接返回给银行,商户端不能对银行的这个请求进行重定向。)
8、工行进行支付指令处理后,如果商户不需要工行实时通知,则工行直接显示交易结果给客户。
2. form表单提交超时时间
1、Meta法在你的表单页里HEAD区加入这段代码:<META HTTP-EQUIV="pragma" CONTENT="no-cache"><META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate"><META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">
2、令牌法生成一个令牌保存在用户session中,在form中加一个hidden域,显示该令牌的值,form提交后重新生成一个新的令牌,将用户提交的令牌和session中的令牌比较,如不同则为重复提交。
3、禁用按钮法<input type="button" value="提交" onclick="this.disabled=true;this.form.submit()">
3. 前端form表单上传文件
用一下代码可以实现,输入用户名,密码,点注册用户键,转到success.jsp页<aui:form action="<%= success%>" method="post" name="<portlet:namespace />fm"> <aui:input name="用户名" size="60" /> <aui:input name="密码" size="60" /> <aui:input name="save" type="submit" value="注册用户" label="" /></aui:form>
4. form 文件上传
可以使ajax方式提交数据。
5. 表单提交文件上传
问卷网没用过,我用的是表单大师,您可以试试,有文件上传字段可直接上传添加图片,还有商品字段
6. form表单上传文件获得返回
其实2个窗口相对来说是独立的。如果你需要从form2拿到回传的数据 通常有2个方案1.中间类,建立一个静态的中间类。在form2中修改,当form2关闭之后从静态类中读取。本来2个窗口需要传递的数据不应该属于任何一个窗口,而是属于这个程序。
2.回调法,form2的构造函数中添加Action回调。相当于从form1传了一个方法function到form2,在form2中修改字符之后 调用/Action Func delegete 都可以。
大致写法是Action<string> 这是一个带string参数的匿名函数。将它添加到form2的构造函数参数中。在需要的时候调用。
public Window2(Action<string> action){ //构造函数}
//Window1 中的代码Window2 w = new Window2((str)=>{ //这里是传入的函数 str 就是从form2中返回的字符串});
//Window2中如何回传
action("测试文本");
7. form表单多文件上传
$('form').submit(function (event) { event.preventDefault(); var form = $(this); if (!form.hasClass('fupload')) { //普通表单 $.ajax({ type: form.attr('method'), url: form.attr('action'), data: form.serialize() }).success(function () { //成功提交 }).fail(function (jqXHR, textStatus, errorThrown) { //错误信息 }); } else { // mulitipart form,如文件上传类 var formData = new FormData(this); $.ajax({ type: form.attr('method'), url: form.attr('action'), data: formData, mimeType: "multipart/form-data", contentType: false, cache: false, processData: false }).success(function () { //成功提交 }).fail(function (jqXHR, textStatus, errorThrown) { //错误信息 }); }; });
8. 文件上传和表单提交的问题
遇到这种情况,先看一下是上传图片的时候,提示空间满了,还是在提交数据的时候,提示数据量已达上限。
然后再去看一下咨询看是否购买。金数据免费版每个月的数据量是50条,这个很容易达到上限,如果是这样的话,直接去升级就可以了。免费版的数据量,金数据的确实不多,虽然功能比较多,但是数据量不够不付费基本上也是用不到;表单大师的免费版数据量稍微多一点,每个月是500条,可以满足一些小型的活动和数据收集
9. 文件上传必须在form表单中使用什么上传方式
4种。
1.application/x-www-form-urlencoded
这应该是最常见的post编码方式,一般的表单提交默认以此方式提交。
2.multipart/form-data
这也是一种比较常见的post数据格式,我们用表单上传文件时,必须使form表单的enctype属性或者ajax的contentType参数等于multipart/form-data。
3.application/json
axios默认提交就是使用这种格式。如果使用这种编码方式,那么传递到后台的将是序列化后的json字符串。
4.text/xml
剩下的一种编码格式是text/xml。
10. vue form表单上传文件
表单提交,在form标签中增加onsubmit事件来判断表单提交是否成功 <script type="text/javascript"> function validate(obj) { if (confirm("提交表单?")) { alert(obj.value); return true; } else { alert(obj.value); return false; } }
11. form表单提交文件上传
一.基于ASP的文件上传实现原理分析
基本原理是:采用ADO Stream对象的BinaryRead方法将FORM中的所有数据读出,从中截取出所需的文件数据,以二进制文件方式存盘。
下面是上传文件页面的一个例子(upload.htm):
<html>
<body>
<form name="Upload" Method="Post" Enctype="multipart/form-data" Action="Upload.asp">
<input type="file" name="FileName">
<INPUT TYPE="Submit" VALUE="Upload"></TD>
</form>
</body>
</html>
程序中使用了文件对象,这样在Upload.asp中采用BinaryRead方法读来的原始数据就不仅仅是选择的文件本身的数据,还包含该文件在用户硬盘上的路径、类型、提交页面的表单域名等相关信息的描述,这样我们就需从中提取出文件的具体内容。根据分析,数据的头部信息与数据的分界线是两对回车换行符,尾部也有分隔信息,我们可以采用类似以下的方法获取文件数据。
Dim FormData.FormSize,DataStart,CLStr,DivStr
FormSize=Request.TotalBytes
FormData=Request.BinaryRead(FormSize)
CLStr=ChrB(13)&ChrB(10)
DataStart=InStrB(FormData.CLStr&CLStr)+4
'4是两对回车换行符的长度
DivStr=LeftB(FormData,InStrB(FormData,CLStr)-1)
DataSize=InStrB(DataStart+1,FormData,DivStr)-DataStart-2
FormData=MidB(FormData,DataStart,DataSize)
FormData就是文件的内容了。
中间根据需要,可进行相应的处理。最后的工作就是将文件保存了。保存的方法可以有两种:一种是利用VB或VC之类程序中的二进制文件操作方法,在工程中加入适当的类型库,最终编译成DLL文件,使用时再将该DLL文件注册就可以了。文件存贮程序如下:
Public Function SaveFile(Pathname As String) As String
Dim objContext As ObjectContext
Dim objRequest As Request
Set objContext=GetObjectContext()
Set objRequest=objContext("Request")
'以下的一段代码是进行文件存贮的有关操作
Dim FormData() As Byte,CLStr,DivStr
Dim DataStart As Long,DataSize As Long
DataSize=objRequest.TotalBytes
Redim FormData(DataSize-1)
FormData=objRequest.BinaryRead(DataSize)
CLStr=ChrB(13) & ChrB(10)
DataStart=InStrB(FormData,CLStr & CLStr)+4
DivStr=LeftB(FormData,InStrB(FormData,CLStr)-1)
DataSize=InStrB(DataStart+1,FormData,DivStr)-DataStart-2
FormData=MidB(FormData,DataStart,DataSize)
'创建一个二进制文件并将FormData写入其中
Open Pathname For Binary As 1
Put #1,,FormData
Close #1
SaveFile="OK!"
End Function
第二种方法是利用ADO STREAM中提供的二进制文件操作方法来完成,保存文件的语句是: StreamOBJ.SaveToFile (fileName,2)。在 这种操作中,我们可以将有关的操作存放在一个类文件中,在应用时,直接将该类文件包含在ASP程序中就可以了。具体处理方法,请参阅有关介绍。
二.文件上传实现方法实例
实现文件上传可使用组件或无组件方式。对于组件类,比如说microsoft posting acceptor(简称mpa),就是微软公司发布的一个免费服务器组件,这类组件的安装也比较方便。对于微软的mpa,运行它的安装文件就可以了。而一般的dll组件形式的,我们则需要进行注册。例如,要使用aspcnUP.dll,只要在Window 2000上执行regsvr32 [path\]aspcnUP.dll,系统出现注册成功的信息提示就可以使用该组件了;对于无组件类,在使用时,只要在处理程序中包含以下的语句就可以了:
<!--#include FILE="upload.inc"-->
set upload=new upload_5xSoft '建立上传对象
有关的属性与操作方法,请参阅该组件的使用手册。
下面是以aspcnUP.dll组件为例,上传部分类型文件的源代码(upload.asp):
<% @ language="vbscript"
Set fileUP=Server.CreateObject("aspcn.Upload")
fileUP.Maxsize=200000
fileUP.Path="d:\upfile"
fileUP.Upload
For i=0 to fileUP.Count
fieldname=fileUP.FieldName(i)
If fileUP.FileType(fieldname)="zip" Or ileUP.FileType(fieldname)="rar" Then
fileUP.Save fieldname
End If
Next
Set fileUP=Nothing
%>
- 相关评论
- 我要评论
-