永发信息网

ASP采用multipart/form-data方式上传数据,数据的结构是什么样的?

答案:3  悬赏:40  手机版
解决时间 2021-02-23 04:45
  • 提问者网友:不要迷恋哥
  • 2021-02-22 20:38
asp无组件上传代码研究了很久,还是感觉有些不懂。总感觉没研究出ASP二进制上传数据结构怎么封装和排位置的?
请高手指点一下,还望写清数据结构的逻辑。小生初学。。!
请别代码一大堆来。。。上传代码我已经看了N遍了。写清他结构就行了。我知道是2进制想知道传输中的数据结构?
最佳答案
  • 五星知识达人网友:持酒劝斜阳
  • 2021-02-22 22:08
例如
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
<input name="aa" type="text" id="aa" />
<input type="file" name="file1" />

<input type="submit" name="Submit" value="提交" />
</form>
首先输入值aa=ssssss,file1选择文件F:\Documents and Settings\Administrator\桌面\smtp.txt 这个文件的内容是三个汉字“你好啊”
提交后
得到
=========================下面是得到的二进制形式的数据
-----------------------------7d7f31001bc
Content-Disposition: form-data; name="aa"

ssssss
-----------------------------7d7f31001bc
Content-Disposition: form-data; name="file"; filename="F:\Documents and Settings\Administrator\桌面\smtp.txt"
Content-Type: text/plain

你好啊
-----------------------------7d7f31001bc
Content-Disposition: form-data; name="Submit"

提交
-----------------------------7d7f31001bc--
=========================二进制数据完
可以看出数据结构:
多个以-----------------------------7d7f31001bc分隔开的二进制数段组成的数据流,其中每一段都包含一个提交的表单元素的名称和值,是文件的话还包含有文件名和Content-Type类型。
但是并不是每次提交都是-----------------------------7d7f31001bc这个字符串,其实这个字符串是在上传时定义的,并且写从request.ServerVariables("HTTP_CONTENT_TYPE")可以获得这个字符串。
全部回答
  • 1楼网友:低血压的长颈鹿
  • 2021-02-22 23:37
服务器端用了stream组件 上传的时候是2进制的,用stream获得的数据也是二进制的.. 再把数据流保存成文件..好像就是这样
  • 2楼网友:千杯敬自由
  • 2021-02-22 22:23

multipart/form-data 是将图片的二进制代码直接存储到数据库里;

appendchunk 方法可以上传二进制数据到数据库

binaryread 取得图片的二进制内容

<% dim   bidata,   postdata,   totalbytes,   chunkbytes chunkbytes   =   1   *   1024           '   分块大小为1k totalbytes   =   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   =   totalbytes loop response.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.close end   function   %

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯