栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用file_get_contents上传文件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用file_get_contents上传文件

首先,

multipart
Content-Type 的第一个规则是 定义一个边界该边界
将用作每个部分之间的定界符(因为顾名思义,它可以包含多个部分)。边界可以是 内容正文中不包含的任何字符串 。我通常会使用时间戳记:

define('MULTIPART_BOUNDARY', '--------------------------'.microtime(true));

定义边界后,必须将其与

Content-Type
标头一起发送,以告知Web服务器期望使用什么定界符:

$header = 'Content-Type: multipart/form-data; boundary='.MULTIPART_BOUNDARY;

完成后,您必须构建与HTTP规范和您发送的标头匹配的适当的内容主体。如您所知,从表单发布文件时,通常将具有一个表单字段名称。我们将定义它:

// equivalent to <input type="file" name="uploaded_file"/>define('FORM_FIELD', 'uploaded_file');

然后,我们构建内容主体:

$filename = "/path/to/uploaded/file.zip";$file_contents = file_get_contents($filename);$content =  "--".MULTIPART_BOUNDARY."rn". "Content-Disposition: form-data; name="".FORM_FIELD.""; filename="".basename($filename).""rn". "Content-Type: application/ziprnrn". $file_contents."rn";// add some POST fields to the request too: $_POST['foo'] = 'bar'$content .= "--".MULTIPART_BOUNDARY."rn". "Content-Disposition: form-data; name="foo"rnrn". "barrn";// signal end of request (note the trailing "--")$content .= "--".MULTIPART_BOUNDARY."--rn";

如您所见,我们将发送

Content-Disposition
带有
form-data
配置的标头,以及
name
参数(表单字段名称)和
filename
参数(原始文件名)。
Content-Type
如果要正确地填充内容,则发送具有正确的MIME类型的标头也很重要
$_FILES[]['type']

如果要上载多个文件,则只需使用 $ content 位重复该过程,当然

FORM_FIELD
每个文件都不同。

现在,构建上下文:

$context = stream_context_create(array(    'http' => array(          'method' => 'POST',          'header' => $header,          'content' => $content,    )));

并执行:

file_get_contents('http://url/to/upload/handler', false, $context);

注意: 发送二进制文件之前无需对其进行编码。HTTP可以很好地处理二进制文件。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/412069.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号