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

开发Prestashop模块:如何通过Dropbox API获取共享链接文件信息与内容

处理Dropbox共享文件夹链接的API方案(适配Prestashop模块开发)

针对你提供的Dropbox共享文件夹链接,以下是通过API获取文件信息和内容的具体步骤,适配PHP/Prestashop环境:

1. 前置准备

  • 在Dropbox开发者控制台创建Scoped Access类型的App,勾选sharing.read和files.content.read权限,生成Access Token(注意妥善保存,不要泄露)。
  • 若使用官方SDK,通过Composer安装依赖:composer require dropbox/dropbox-sdk

2. 获取共享文件夹的元数据

先调用sharing/get_shared_link_metadata接口解析共享链接,拿到文件夹的唯一ID和基础信息:

<?php
require __DIR__ . '/vendor/autoload.php'; // 引入SDK

$accessToken = '你的Dropbox Access Token';
$sharedLink = 'https://www.dropbox.com/sh/ognd7avuw63pm8s/AABl5K_uZY1RKGp5SbY__nD5a?dl=0';

// SDK方式
$dbx = new Dropbox\Client($accessToken, 'Prestashop-Module');
try {
    $metadata = $dbx->getSharedLinkMetadata($sharedLink);
    $folderId = $metadata['id']; // 文件夹唯一标识,格式如"id:xxxxxx"
} catch (Dropbox\Exception $e) {
    echo '错误:' . $e->getMessage();
}
?>

不用SDK的话,可直接用cURL请求:

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.dropboxapi.com/2/sharing/get_shared_link_metadata');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $accessToken,
    'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['url' => $sharedLink]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$metadata = json_decode($response, true);
$folderId = $metadata['id'];
?>

3. 获取文件夹内的文件列表

拿到folderId后,用files/list_folder接口遍历文件夹内所有文件:

<?php
// SDK方式
$folderPath = '/id:' . $folderId;
$filesList = $dbx->listFolder($folderPath);
do {
    foreach ($filesList['entries'] as $entry) {
        // 每个entry包含文件名、路径、大小、修改时间等信息
        echo '文件名:' . $entry['name'] . ',大小:' . $entry['size'] . '字节' . PHP_EOL;
    }
    $filesList = $dbx->listFolderContinue($filesList['cursor']);
} while ($filesList['has_more']);

// cURL方式
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.dropboxapi.com/2/files/list_folder');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $accessToken,
    'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
    'path' => $folderPath,
    'recursive' => false // 需要递归子文件夹则设为true
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$filesData = json_decode($response, true);
// 若has_more为true,需循环调用list_folder/continue接口获取剩余文件
?>

4. 下载单个文件内容

针对列表中的目标文件,用files/download接口获取内容并保存到Prestashop模块目录:

<?php
// 示例:下载指定文件,假设文件路径为 "/id:<folderId>/example.txt"
$filePath = $folderPath . '/example.txt';
// 保存路径,替换为你的模块目录
$savePath = _PS_MODULE_DIR_ . 'mydropboxmodule/downloads/example.txt';

// SDK方式
try {
    $fileContent = $dbx->getFile($filePath);
    file_put_contents($savePath, $fileContent);
} catch (Dropbox\Exception $e) {
    echo '下载失败:' . $e->getMessage();
}

// cURL方式
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://content.dropboxapi.com/2/files/download');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $accessToken,
    'Dropbox-API-Arg: ' . json_encode(['path' => $filePath])
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$fileContent = curl_exec($ch);
curl_close($ch);
file_put_contents($savePath, $fileContent);
?>

注意事项

  • 若共享链接设置了密码,调用get_shared_link_metadata时需在请求JSON中加入"password": "你的密码"参数。
  • Prestashop开发中,建议将Access Token存到模块配置项,不要硬编码在代码里。
  • 处理大文件时,建议使用分块下载或流式处理,避免内存溢出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 05:45:35