Имя файла с хешем (#) не загружается - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь отправить файл в OneDrive, используя следующий код:

$uri = "/me/drive/items/$folderId/children('{$fileName}')/content";

$graph = $this->graph->create($user);
$client = $this->graph->createClient();

$item = $graph->createRequest("PUT", $uri)
    ->attachBody($fileContent)
    ->setReturnType(Model\DriveItem::class)
    ->execute($client);

Это прекрасно работает, если $ fileName что-то вроде Test.doc

Но по какой-то причине,когда в имени файла есть хеш (#) в имени файла, тогда я получаю сообщение об ошибке:

object(Microsoft\Graph\Model\DriveItem)#1509 (1) {
  ["_propDict":protected]=>
  array(1) {
    ["error"]=>
    array(3) {
      ["code"]=>
      string(10) "BadRequest"
      ["message"]=>
      string(36) "Bad Request - Error in query syntax."
      ["innerError"]=>
      array(2) {
        ["request-id"]=>
        string(36) "ff3fe15f-b1ee-4e92-8abd-2400b1c1b5cf"
         ["date"]=>
         string(19) "2018-10-04T14:30:51"
       }
    }
  }

Может кто-нибудь уточнить, является ли это ошибкой или фактическим поведением (то есть вы не можете иметь # в имени файла)

Спасибо

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Я полагаю, вы используете Microsoft Graph Library для PHP , специальные символы, такие как #, должны быть экранированы.

Итак, либо замените хеш на %23 ( процентное кодирование ), либо используйте rawurlencode function , как показано ниже:

    $fileName = rawurlencode("Guide#.docx");

    $requestUrl = "https://graph.microsoft.com/v1.0/drives/$driveId/root:/$fileName:/content";

    try {
        $item = $client->createRequest("PUT", $requestUrl)
            ->attachBody($fileContent)
            ->setReturnType(Model\DriveItem::class)
            ->execute();

    } catch (\Microsoft\Graph\Exception\GraphException $ex) {
        print $ex;
    }
0 голосов
/ 05 октября 2018

Хотя имя файла имеет поддержку # в имени , но это не означает, что команда разработчиков предоставляет API или корректирует существующий API в первый раз, используемый вами API, возможно, не полностью отрегулирован для соответствияпоследние правила именования.Так что теперь это должно быть реальное поведение, а не ошибка / или вы можете рассматривать его как несуществующую функцию.enter image description here

В списке разработчиков SharePoint есть проблема , список проблем , хотя это не одно и то же, но предложението же самое, проголосуйте за существующую функцию или отправьте новую на UserVoice.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...