jsjs 获取input值<input type="file">中的文件名称

您还未登陆,请登录后操作!
[ASP]表单并行提交多类数据类型
比如
有个表单
里面有
&input type=&text&&和&input type=&file&&
一个是text内型 一个是file类型
怎么同时提交写入??
一旦使用BinaryRead 方法后
再也不能使用Request.Form 或 Request.QueryString 集合了。
请大家指点一下
非常感谢
您的举报已经提交成功,我们将尽快处理,谢谢!已有天涯账号?
这里是所提的问题,您需要登录才能参与回答。
"天涯问答"是天涯社区旗下的问题分享平台。在这里您可以提问,回答感兴趣的问题,分享知识和经历,无论您在何时何地上线都可以访问,此平台完全免费,而且注册非常简单。
怎么挖到后缀为upfile_flash asp的地址
怎么挖到后缀为upfile_flash asp的地址
09-10-16 &匿名提问 发布
Asp文件是存在系统C盘内的一个文件夹内的.取决于你安装的数据库地址.
请登录后再发表评论!
一、无组件上传的原理我还是一点一点用一个实例来说明的吧,客户端HTML如下。要浏览上传附件,我们通过&input type=&file&&元素,但是一定要注意必须设置form的enctype属性为&multipart/form-data&: &form method=&post& action=&upload.asp& enctype=&multipart/form-data&& &label&  &input type=&file& name=&file1& /& &/label& &br /& &input type=&text& name=&filename& value=&default filename&/& &br /& &input type=&submit& value=&Submit&/& &input type=&reset& value=&Reset&/&&/form&在后台asp程序中,以前获取表单提交的ASCII 数据,非常的容易。但是如果需要获取上传的文件,就必须使用Request对象的BinaryRead方法来读取。BinaryRead方法是对当前输入流进行指定字节数的二进制读取,有点需要注意的是,一旦使用BinaryRead 方法后,再也不能使用Request.Form 或 Request.QueryString 集合了。结合Request对象的TotalBytes属性,可以将所有表单提交的数据全部变成二进制,不过这些数据都是经过编码的。首先让我们来看看这些数据是如何编码的,有无什么规律可循,编段代码,在代码中我们将BinaryRead读取的二进制转化为文本,输出出来,在后台的upload.asp中(注意该示例不要上传大文件,否则可能会造成浏览器死掉): &%Dim biData, PostDataSize = Request.TotalBytesbiData = Request.BinaryRead(Size)PostData = BinaryToString(biData,Size)Response.Write &&pre&& & PostData & &&/pre&&  '使用pre,原样输出格式' 借助RecordSet将二进制流转化成文本Function BinaryToString(biData,Size)
Const adLongVarChar = 201 Set RS = CreateObject(&ADODB.Recordset&) RS.Fields.Append &mBinary&, adLongVarChar, Size RS.Open RS.AddNew  RS(&mBinary&).AppendChunk(biData) RS.Update BinaryToString = RS(&mBinary&).Value RS.CloseEnd Function %&简单起见,上传一个最简单的文本文件(G:\homepage.txt,内容为&宝玉:&)来试验一下,文本框filename中保留默认值&default filename&,提交看看输出结果: -----------------------------7dfeContent-Disposition: form- name=&file1&; filename=&G:\homepage.txt&Content-Type: text/plain宝玉:-----------------------------7dfeContent-Disposition: form- name=&filename&default filename-----------------------------7dfe--可以看出来对于表单中的项目,是用过&-----------------------------7dfe&这样的边界来分隔成一块一块的,每一块的开始都有一些描述信息,例如:Content-Disposition: form- name=&filename&,在描述信息中,通过name=&filename&可以知道表单项的name。如果有filename=&G:\homepage.txt&这样的内容,说明是一个上传的文件,如果是一个上传的文件,那么描述信息会多一行Content-Type: text/plain来描述文件的Content-Type。描述信息和主体信息之间是通过换行来分隔的。 嗯,基本上清晰了,根据这个规律我们就知道该怎么来分离数据,再对分离的数据进行处理了,不过差点忽略一个问题,就是边界值(上例中的&-----------------------------7dfe&)是怎么知道的?每次上传这个边界值是不一样的,还好还好asp中可以通过Request.ServerVariables( &HTTP_CONTENT_TYPE&)来获之,例如上例中HTTP_CONTENT_TYPE内容为:&multipart/form- boundary=---------------------------7dfe&,有了这个,我们不仅可以判断客户端的form中有无使用enctype=&multipart/form-data&(如果没有使用,那么下面就没必要执行啦),还可以获取边界值boundary=---------------------------7dfe。(注意:这里获取的边界值比上面的边界值开头要少&--&,最好补充上。) 至于如何分析数据的过程我就不多赘述了,无非就是借助InStr,Mid等这样的函数来分离出来我们想要的数据。二、分块上传,记录进度要实时反映进度条,实质就是要实时知道当前服务器获取了多少数据?再回想一下我们实现上传的过程,我们是通过Request.BinaryRead(Request.TotalBytes)来实现的,在Request的过程中我们无法得知当前服务器获取了多少数据。所以只能通过变通的方法了,如果我们可以将获取的数据分成一块一块的,然后根据已经上传的块数我们就可以算出来当前上传了多大了!也就是说,如果我1K为1块,那么上传1MB的输入流就分成1024块来获取,例如我当前已经获取了100块,那么就表明当前上传了100K。当我提出分块的时候很多人觉得不可思议,因为他们都忽略BinaryRead方法不仅是可以读取指定大小,而且可以连续读取的。写个例子来验证一下分块读取的完整性,在刚才的例子基础上(注意该示例不要上传大文件,否则可能会造成浏览器死掉): &%Dim biData, PostData, TotalBytes, ChunkBytesChunkBytes = 1 * 1024     ' 分块大小为1KTotalBytes = Request.TotalBytes  ' 总大小PostData = &&         ' 转化为文本类型后的数据ReadedBytes = 0        ' 初始化为0' 分块读取Do While ReadedBytes & TotalBytes biData = Request.BinaryRead(ChunkBytes)  ' 当前块 PostData = PostData & BinaryToString(biData,ChunkBytes) ' 将当前块转化为文本并拼接 ReadedBytes = ReadedBytes + ChunkBytes ' 记录已读大小 If ReadedBytes & TotalBytes Then ReadedBytes = TotalBytesLoopResponse.Write &&pre&& & PostData & &&/pre&&  ' 使用pre,原样输出格式' 将二进制流转化成文本Function BinaryToString(biData,Size)
Const adLongVarChar = 201 Set RS = CreateObject(&ADODB.Recordset&) RS.Fields.Append &mBinary&, adLongVarChar, Size RS.Open RS.AddNew  RS(&mBinary&).AppendChunk(biData) RS.Update BinaryToString = RS(&mBinary&).Value RS.CloseEnd Function %&试验一下上传刚才的文本文件,输出结果证明这样分块读取的内容是完整的,并且在While循环中,我们可以在每次循环时将当前状态记录到Application中,然后我们就可以通过访问该Application动态获取上传进度条。 另:上例中是通过字符串拼接的,如果是要拼接二进制数据,可以通过ADODB.Stream对象的Write方法,示例代码如下: Set bSourceData = createobject(&ADODB.Stream&)bSourceData.OpenbSourceData.Type = 1 'BinaryDo While ReadedBytes & TotalBytes biData = Request.BinaryRead(ChunkBytes) bSourceData.Write biData ' 直接使用write方法将当前文件流写入bSourceData中 ReadedBytes = ReadedBytes + ChunkBytes If ReadedBytes & TotalBytes Then ReadedBytes = TotalBytes Application(&ReadedBytes&) = ReadedBytesLoop三、保存上传的文件通过Request.BinaryRead获取提交数据,分离出上传文件后,根据数据类型的不同,保存方式也不同:对于二进制数据,可以直接通过ADODB.Stream对象的SaveToFile方法,将二进制流保存成为文件。 对于文本数据,可以通过TextStream对象的Write方法,将文本数据保存到文件中。 对于文本数据和二进制数据,是可以方便的相互转换的,对于上传小文件来说,两者基本上没什么差别。但是两种方式保存时还是有一些差别的,对于ADODB.Stream对象,必须将所有数据全部装载完才可以保存成文件,所以使用这种方式如果上传大文件将很占用内存,而对于TextStream对象,可以在文件创建好后,一次Write一部分,分多次Write,这样的好处是不会占用服务器内存空间,结合上面分析的分块获取数据原理,我们可以每获取一块上传数据就将之Write到文件中。我曾做过试验,同样本机上传一个200多MB的文件,使用第一种方式内存一直在涨,到最后直接提示计算机虚拟内存不足,最可恨是即使进度条表示文件已经上传完,但是最终文件还是没有保存上。而使用后一种方法,上传过程中内存基本上无什么变化。四、未解决的难题我在博客园上看到Bestcomy描述他的Asp.Net上传组件是可以和Sever.SetTimeOut无关的,而在Asp中我是没能做到,对于上传大文件,就只有将Server.SetTimeOut设置为一个很大的值才可以。不知道有没有比较好的解决方法。如果我们在保存文件时,使用TextStream对象的Write方法,那么如果用户上传时中断了文件传输,已经上传的那部分文件还是在的,如果可以断点续传就好了。关键问题是Request.BinaryRead方法虽然可以分块读取,但是却不能跳过某一段读取!五、结束语原理基本上是说清楚了,但是实际代码要比这复杂的多,要考虑很多问题,最麻烦在分析数据那部分,对于每一块获取的数据,要分析是不是属于描述信息,是表单项目还是上传的文件,文件是否已经上传结束…… 相信根据上面的描述,您也可以开发出您自己功能强大的无组件上传组件。我想更多的人关心的只是代码,而不会自己动手去写的,也许没有时间,也许水平还不够,更多的只是已经成为了一种习惯……我在CSDN上见过太多技术八股文——一段说明,然后全是代码。授人以鱼不若授人以渔,给你一个代码,也许你并不会去思考为什么,直接拿去用,当下次碰到类似的问题的时候,还是不知道为什么,希望此文能让更多人学到点什么,最重要是“悟”到点什么!
请登录后再发表评论!
现在有些网站屏蔽无法访问,如果用代理总是不稳定,用vpn最好的办法,稳定而且速度快,可以访问很多网站,比如Facebook,Twitter,youtube。当然其他你无法再国内连接的都可以访问,比如6park,牛博国际,mitbbs,ogrish,等等外服游戏,比如魔兽也可以加速就好像你人在美国一样,完全自由美国vpn,10元包月,速度稳定。
请登录后再发表评论!您现在的位置: &
在《INPUTTYPE=“FILE”》里单击打开的浏览文件时,可以只显示JPG和GIF文件吗?
在《INPUTTYPE=“FILE”》里单击打开的浏览文件时,可以只显示JPG和GIF文件吗?
  &input type=&file& accept=&&&&br&  &br&  accept属性列表&br&  1.accept=&application/msExcel&&br&  2.accept=&application/msword&&br&  3.accept=&application/pdf&&br&  4.accept=&application/poscript&&br&  5.accept=&application/rtf&&br&  6.accept=&application/x-zip-compressed&&br&  7.accept=&audio/basic&&br&  8.accept=&audio/x-aiff&&br&  9.accept=&audio/x-mpeg&&br&  10.accept=&audio/x-pn/realaudio&&br&  11.accept=&audio/x-waw&&br&  12.accept=&image/gif&&br&  13.accept=&image/jpeg&&br&  14.accept=&image/tiff&&br&  15.accept=&image/x-ms-bmp&&br&  16.accept=&image/x-photo-cd&&br&  17.accept=&image/x-png&&br&  18.accept=&image/x-portablebitmap&&br&  19.accept=&image/x-portable-greymap&&br&  20.accept=&image/x-portable-pixmap&&br&  21.accept=&image/x-rgb&&br&  22.accept=&text/HTML&&br&  23.accept=&text/plain&&br&  24.accept=&video/quicktime&&br&  25.accept=&video/x-mpeg2&&br&  26.accept=&video/x-msvideo&&br&  需要什么选吧!
&&&主编推荐
&&&热门试卷
&&&最新视频
&&&热门阅读
&&&最新问答
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
阅读(167)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'怎么给&input type=&file& id=&uploadFile& /& 赋值',
blogAbstract:'
我知道由于安全因素&input type=\"file\" id=\"uploadFile\" /& 是只读的,但我要动态上传多个文件,我必须要给这个组件赋值。以下这种方式我已经试过,是可以的&&&&&&&& var path = \"c:\\\\123.text\";&&&&&&&& var uploadFile = document.getElementById(\"uploadFile\");&&&&&&&& var WshShell=new ActiveXObject(\"WScript.Shell\");',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:9,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}在《INPUT TYPE=“FILE”》里单击打开的浏览文件时,可以只显示JPG和GIF文件吗?_自动测试脚本语言_领测软件测试网
在《INPUT TYPE=“FILE”》里单击打开的浏览文件时,可以只显示JPG和GIF文件吗?
发表于:来源:作者:点击数:
input type= accept=br br accept属性列表br 1.accept=application/br 2.accept=application/br 3.accept=application/br 4.accept=application/br 5.accept
&input type=&file& accept=&&&&br&
accept属性列表&br&
1.accept=&application/msexcel&&br&
2.accept=&application/msword&&br&
3.accept=&application/pdf&&br&
4.accept=&application/poscript&&br&
5.accept=&application/rtf&&br&
6.accept=&application/x-zip-compressed&&br&
7.accept=&audio/basic&&br&
8.accept=&audio/x-aiff&&br&
9.accept=&audio/x-mpeg&&br&
10.accept=&audio/x-pn/realaudio&&br&
11.accept=&audio/x-waw&&br&
12.accept=&image/gif&&br&
13.accept=&image/jpeg&&br&
14.accept=&image/tiff&&br&
15.accept=&image/x-ms-bmp&&br&
16.accept=&image/x-photo-cd&&br&
17.accept=&image/x-png&&br&
18.accept=&image/x-portablebitmap&&br&
19.accept=&image/x-portable-greymap&&br&
20.accept=&image/x-portable-pixmap&&br&
21.accept=&image/x-rgb&&br&
22.accept=&text/html&&br&
23.accept=&text/plain&&br&
24.accept=&video/quicktime&&br&
25.accept=&video/x-mpeg2&&br&
26.accept=&video/x-msvideo&&br&
需要什么选吧!
原文转自:
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)}

我要回帖

更多关于 js 获取input值 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信