使用 file_get_contents() 和 multipart/form-data 上传文件
尽管使用 CURL 上传文件很容易,但用户可能会好奇是否file_get_contents() 可以使用 http 流上下文执行此任务。
多部分内容类型对文件上传提出了挑战。它需要定义一个边界来分隔上传文件中的每个部分。此边界与内容正文中未包含的任何字符串一样,可以使用带有 microtime(true) 的时间戳生成。
定义边界后,必须在 Content-Type 标头中指定它。此外,还需要构建遵循HTTP规范的内容主体和发送的标头。每个表单字段名称必须包含在 Content-Disposition 标头中,以及文件名和 Content-Type 标头。
如果要上传多个文件,则必须为每个文件重复生成 $content 字符串的过程文件,相应地指定不同的 FORM_FIELD 值。
最后,可以使用 file_get_contents() 的 context 参数构建流上下文。 context 参数中的 http 数组配置方法 (POST)、标头(包括具有多部分边界的 Content-Type)和内容。
通过使用配置的上下文执行 file_get_contents(),文件上传是发起。值得注意的是,二进制文件编码是不必要的,因为 HTTP 可以有效处理二进制数据。
以上是file_get_contents() 可以使用 multipart/form-data 执行文件上传吗?的详细内容。更多信息请关注PHP中文网其他相关文章!