ASP采用multipart/form-data方式上传数据,数据的结构是什么样的?
- 提问者网友:不要迷恋哥
- 2021-02-22 20:38
请高手指点一下,还望写清数据结构的逻辑。小生初学。。!
请别代码一大堆来。。。上传代码我已经看了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
- 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 %