首页 > 技术研究 > 编程实现文件上传

编程实现文件上传

2007年2月8日

服务器的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]
分类: 技术研究 标签: , ,
  1. 2009年10月31日21:41 | #1

    文件名当做gbk的上传,如果server段是utf8编码的,做一下转码即可

  2. nj_ww
    2009年10月31日16:22 | #2

    我现在就遇到了中文文件名的问题,应该如何解决呢?谢谢!

  1. 本文目前尚无任何 trackbacks 和 pingbacks.