编程实现文件上传
服务器的cgi程序处理都差不多,都会从在某个字典里面存放文件的数据,主要数据就3个:
- 文件名
- 文件长度
- 文件内容一次可以上传多个文件.RFC1867定义了这个协议
对于客户端来说,要想一次上传多个文件,表单里面就得有多个 <input type=”file” />, 不然只能通过activex或者应用程序的方式来完成 ,服务器也有一些设定,来限制通过web上传文件,比如说asp.net有4M的限制, 编写程序来通过post上传文件,也比较容易,python很简单,有不少现成的代码
delphi也很简单,代码如下
var stream: TIdMultiPartFormDataStream; IdHTTP1: TIdHTTP; begin stream := TIdMultiPartFormDataStream.Create; stream.AddFile(tag_name, filename, GetMIMETypeFromFile(filename)); IdHTTP1.Post(URL,stream) end;
这里面的tag_name就是<input>表单里面的name,用来在服务器端区分文件的,当然通过文件名也能够区分.
有一个问题是,indy这个控件TIdMultiPartFormDataStream,用本地编码就把文件名传上去了,堆非英文文件名来说,容易出现乱码,很多web程序都采用utf-8的方式来解决这个问题,要提交utf-8编码的字符串,必须修改TIdMultiPartFormDataStream类的代码
本文永久链接:http://www.xiaokou.org/2007/02/08/71/
转载 请注明:来自小抠大赚-博客 [http://www.xiakou.org]
文件名当做gbk的上传,如果server段是utf8编码的,做一下转码即可
我现在就遇到了中文文件名的问题,应该如何解决呢?谢谢!