1

我正在尝试使用 curl 上传文件,并且在 PHP 文档中它说:

要发布文件,请在文件名前加上 @ 并使用完整路径。文件类型可以通过使用格式为“;type=mimetype”的文件名来明确指定。此参数可以作为 urlencoded 字符串(如 'para1=val1¶2=val2&...')或作为字段名称作为键和字段数据作为值的数组传递。如果 value 是一个数组,则 Content-Type 标头将设置为 multipart/form-data。从 PHP 5.2.0 开始,如果文件以 @ 前缀传递给此选项,则 value 必须是数组。从 PHP 5.5.0 开始,不推荐使用 @ 前缀,并且可以使用 CURLFile 发送文件。

所以我尝试使用 CURLFile 代替,而我得到了错误

调用未定义的函数 curl_file_create()

所以 - 然后我尝试找到类 CURLFile var_dump(class_exists('curlfile'));

但它说它没有。我想知道 - CURLFile 是必须手动安装的吗?使用 @path/to/file;type=mime 会更好吗,即使它很快就会被弃用?

谢谢

To clairy - curl 已安装并可以正常工作。只是我的系统上似乎不存在文件处理的巨型机器。

我不添加任何代码,因为没有要添加的代码。我运行curl_file_create()并得到该函数不存在的答案,即使 curl 本身有效。

4

3 回答 3

4

PHP 必须使用--with-curlswitch 编译才能使用此功能。检查您的phpinfo()输出以验证您的 PHP 编译时使用的开关。

如果您在 Linux 上,请检查您的发行版的软件包,因为 Curl 支持可能由模块提供。(例如,在 Debian 上必须安装该php5-curl软件包。)


请注意,这curl_file_create()是在 PHP 5.5.0 中添加的。如果您的 PHP 安装较旧,它将不支持此功能。

于 2013-08-21T16:57:32.607 回答
1

我不使用“curl_file_create”和“CurlFile”,我更喜欢使用“@/file_name_with_full_path”。

请参阅参考链接并使用这些其他方法通过 POST 方法通过 CURL 通过 PHP 上传文件。

使用 curl 和 PHP 通过 post 发送文件

于 2013-08-21T17:15:27.157 回答
0

如果您使用的是 xampp 或 wamp,则必须更新 php.ini 文件以启用 curl,因为 apache 在其使用的文件夹中有单独的 php.ini 文件。Web 服务器 php.ini 文件与 php 中的 php.ini 不同安装文件夹。

于 2013-08-21T17:07:00.113 回答