Ошибка анализа Google Диска при загрузке файла со специальными символами Юникода

Недавно возникла проблема при попытке загрузить файлы с помощью SDK клиента Google API dotnet. Когда имя файла содержит какие-либо специальные символы Юникода, возникает ошибка.

Вот мой код

    public static Google.Apis.Drive.v2.Data.File InsertResource(Google.Apis.Drive.v2.DriveService service, string filePath, string parentId, string fileName, string mimeType)
    {
        Google.Apis.Drive.v2.Data.File body = new Google.Apis.Drive.v2.Data.File();

        try
        {
            // File's metadata.

            body.Title = fileName;
            body.MimeType = mimeType;

            // Set the parent folder.
            if (!String.IsNullOrEmpty(parentId))
            {
                var response = DriveUtils.GetFileInfo(service, parentId);
                if (response.Error != null)
                {
                    body.Error = response.Error;
                    return body;
                }
                body.Parents = new List<ParentReference>() { new ParentReference() { Id = parentId } };
            }

            byte[] byteArray = System.IO.File.ReadAllBytes(filePath);
            MemoryStream stream = new MemoryStream(byteArray);

            Google.Apis.Drive.v2.FilesResource.InsertMediaUpload request = service.Files.Insert(body, stream, mimeType);

            request.Upload();
            return request.ResponseBody;

        }
        catch (GoogleApiRequestException e)
        {
            body.Error = e.RequestError;
            return body;
        }
}

До этой недели все работало нормально. Любые файлы с китайскими или турецкими иероглифами в имени вызовут ошибку.

в Google.Apis.Json.JsonReader.ParseExpression(токен JsonToken, TokenStream ts) в Google.Apis.Json.JsonReader.Parse(String jsonAsText) в Google.Apis.Upload.ResumableUpload`1.Upload()


person James McSweeny    schedule 02.07.2013    source источник
comment
У меня возникает та же проблема, но я использую webRequest напрямую, поэтому я получаю сообщение об ошибке только тогда, когда объект json попадает на сервер Google Drive: stackoverflow.com/questions/17431572/   -  person IPValverde    schedule 03.07.2013


Ответы (1)


Попробуйте загрузить последнюю версию API (с https://code.google.com/p/google-api-dotnet-client/wiki/APIs#Drive_API). Я изменил строка 122 в образце Диска (инструкции по загрузке этого образца приведены здесь), для Title = "字/漢字" и Title = "заголовок с ç", и оба они у меня работали.

person peleyal    schedule 03.07.2013