You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PHP代码将文件上传至Shutterstock FTP?

PHP 上传文件至 Shutterstock FTP 的实现方案

修正后的完整代码

// 配置信息
$user = "你的Shutterstock用户名";
$pass = "你的Shutterstock密码";
$localfile = "本地文件路径"; // 示例: "./photo.jpg"
$remotefile = "远程文件路径"; // 示例: "subfolder/photo.jpg"
$upURL = "ftp.shutterstock.com";

// 初始化cURL会话
$ch = curl_init();
if (!$ch) {
    die("无法初始化cURL会话");
}

// 以二进制模式打开本地文件
$fp = fopen($localfile, "rb");
if (!$fp) {
    die("无法读取本地文件: " . $localfile);
}

// 设置cURL核心选项
curl_setopt($ch, CURLOPT_URL, "ftp://" . $upURL . "/" . $remotefile);
curl_setopt($ch, CURLOPT_USERPWD, $user . ":" . $pass);
curl_setopt($ch, CURLOPT_UPLOAD, true);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($localfile)); // 自动获取本地文件大小
curl_setopt($ch, CURLOPT_FTP_CREATE_MISSING_DIRS, true); // 自动创建不存在的远程目录
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// 执行上传操作
$result = curl_exec($ch);

// 错误处理与结果反馈
if ($result === false) {
    echo "上传失败: " . curl_error($ch);
} else {
    echo "文件上传成功";
}

// 清理资源
curl_close($ch);
fclose($fp);

关键优化说明

  • 会话初始化: 原代码缺少curl_init()创建会话句柄的步骤,这是cURL操作的必要前提。
  • 文件读取模式: 使用rb二进制模式读取文件,避免跨系统环境下的文件编码或格式异常。
  • 文件大小获取: 用filesize()替代自定义属性获取文件大小,避免因属性值错误导致上传中断。
  • 目录自动创建: 开启CURLOPT_FTP_CREATE_MISSING_DIRS可自动生成远程路径中不存在的目录,减少手动操作。

常见问题排查

  • 确认Shutterstock账户已开通FTP上传权限,且用户名、密码无误。
  • 检查服务器是否启用cURL扩展,且支持FTP协议。
  • 确保服务器防火墙/安全组允许出站FTP连接(默认端口21)。

内容的提问来源于stack exchange,提问作者HomerSenpai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 14:18:18