最近、Google API dotnet client sdk でファイルをアップロードしようとすると問題が発生しました。ファイル名に特殊な Unicode 文字が含まれていると、エラーがスローされます。
これが私のコードです
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()