У IM возникли проблемы с доступом к метаданным пути ->, когда путь имеет пробел в одном из имен папок. Поэтому, если путь — / CLIENT / FOLDER NAME, вызов метаданных возвращает 401. Я кодирую параметр пути следующим образом:
$path = str_replace('%2F', '/', rawurlencode($path));
который добавляет% 20 для пробелов. Если я захожу в dropbox и меняю «FOLDER NAME» на «FOLDER-NAME», все проходит просто отлично. Есть ли другой способ, которым я должен кодировать путь?
Вот еще код, предшествующий
Я углубляюсь в папки и передаю предыдущий путь к папке в виде строки запроса «путь»
поэтому URL, с которым у меня возникли проблемы: «/ my-hub /? path = COMM% 20POLICIES»
$clientpath = "/DACLIENTS/$username";//username is the current user
$path = $clientpath;
if(isset($_GET['path'])){
$path .= '/'.rawurldecode($_GET['path']);
}
$path = rawurlencode($path);
$path = str_replace('%2F', '/', $path);
// List contents of directory
if ($home = $client->metadata($path)) {
...
}
Попробуйте использовать сырое пространство. Мне никогда не приходилось кодировать пробелы, когда я работал с API Dropbox. Если вы посмотрите на возвращение метаданных. Файлы с пробелами пишутся в точности так, как они есть, и нет кодировки urlencoding.
Попробуйте что-то вроде
gsub("%2F","/",curlEscape($path)) <-- But this is rails.
от Вот
Вот php curl_escape
gsub похож на Вот
preg_replace( "/^(\w[^\r\n]*)(?=\r?\n\w.*$)/m", "\\1 ", $text );
Одним из решений было редактировать заголовки в файлах
Проблема возникает из-за формата / кодировки имени файла в заголовке отправляемого файла. Исправление заключается в необработанном кодировании имени файла в заголовке.
https://code.google.com/p/dropbox-php/issues/detail?id=13
PS — пути хранятся в байтах