上传|算法|无组件
前几天帮朋友faintbear修改一个“asp无组件上传”的代码,得了几点心得,写在此处,或许还有点用处。
我没有开发过asp程序,只是临时报佛脚,修改了一下控制语句,所以,这里不再给出asp代码,只是说明一下思路。(你最好在看这篇文章前先浏览一下faintbear的《asp无组件上传的原理 (转) 》这篇文章,重复的部分我不再叙述了)
大体是这样的,一个form表单中可能post多个文本,居各简单的例子:
<form method="post" action="upload.asp" enctype="multipart/form-data">
<label>
<input type="file" name="file1" />
</label>
<br />
<input type="text" name="id" value="234523894"/>
<br />
<input type="text" name="name" value="Faint Bear"/>
<br />
<input type="text" name="friend" value="Smile Once"/>
<br />
<input type="submit" value="Submit"/>
<input type="reset" value="Reset"/>
</form>
-----------------------------7d429871607fe
Content-Disposition: form-data; name="file1"; filename="G:\homepage.txt"
Content-Type: text/plain
宝玉:http://www.webuc.net
-----------------------------7d429871607fe
Content-Disposition: form-data; name="id"
234523894
-----------------------------7d429871607fe--
Content-Disposition: form-data; name="name"
Faint Bear
-----------------------------7d429871607fe--
Content-Disposition: form-data; name="friend"
Smile Once
-----------------------------7d429871607fe--
由于file1可能非常大,而诸如id、name、friend这些要提交的域又非常多,而且file1、id、name、friend的相对位置又不确定(原文中是把这些条目的顺序写死的),如何才能更好的划分流的块呢?
我的思路是:首先按条目来划分块,就是file1、id、name、friend各一块;之后,如果是file类型的,再根据其大小细分成若干块。基本上是这样的结构:
--------------------------
file1 ------------
No.1 block
------------
No.2 block
------------
No. ..... .. block
------------
--------------------------
id
--------------------------
name
--------------------------
friend
--------------------------
这样就井然有序,既确保的结构的清晰,又解决的大文件上传的问题。