【发布时间】:2017-02-15 15:45:18
【问题描述】:
我的问题很简单:我想在大文件上传到达时将其写入磁盘。我有两个大文件通过同一个multipart/form-data 表单上传。如何检测文件的结尾,换句话说,如何检测到达字节中间的边界------WebKitFormBoundaryuFPBAbBHzPMrZn8g?
拥有被上传文件的长度可以完全解决这个问题,但是这个信息不是由 http 请求给出的(只是完整的内容长度,而不是被上传的单个文件的长度)。
那么当我将字节写入磁盘时,检测边界的逻辑/策略/算法是什么。当然,我不想写边界,认为它是文件的一部分。我必须检测并停止写入磁盘。请注意,在开始写入磁盘之前,我无法将整个文件加载到内存中。这样问题就容易多了。
这是一个包含两个文件的 multipart/form-data 的格式:
发布/HTTP/1.1 主机:本地主机:8000 连接:保持活动 内容长度:362 缓存控制:max-age=0 产地:无 升级不安全请求:1 用户代理:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36 内容类型:multipart/form-data;边界=----WebKitFormBoundaryuFPBAbBHzPMrZn8g 接受:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 接受编码:gzip,放气 接受语言:en-US,en;q=0.8,pt;q=0.6 ------WebKitFormBoundaryuFPBAbBHzPMrZn8g 内容处置:表单数据;名称=“文件1”;文件名="二进制.dat" 内容类型:应用程序/八位字节流 aωb ------WebKitFormBoundaryuFPBAbBHzPMrZn8g 内容处置:表单数据;名称=“文件2”;文件名="二进制.dat" 内容类型:应用程序/八位字节流 aωb ------WebKitFormBoundaryuFPBAbBHzPMrZn8g--【问题讨论】:
标签: forms algorithm http parsing file-upload