Skip to content

Commit ce31964

Browse files
authored
Use FileNameStar instead of replacing symbols. (Azure#50391)
1 parent 7a454c4 commit ce31964

File tree

3 files changed

+15
-14
lines changed

3 files changed

+15
-14
lines changed

sdk/ai/Azure.AI.Agents.Persistent/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
### Breaking Changes
88

99
### Bugs Fixed
10+
- Fixed uploading files with non ASCII symbols in names.
1011

1112
### Other Changes
1213

sdk/ai/Azure.AI.Agents.Persistent/src/Custom/PersistentAgentsFiles.cs

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ public virtual async Task<Response<PersistentAgentFileInfo>> UploadFileAsync(Str
6060
Argument.AssertNotNull(data, nameof(data));
6161
Argument.AssertNotNullOrEmpty(filename, nameof(filename));
6262

63-
filename = ReplaceNonAscii(filename);
6463
UploadFileRequest uploadFileRequest = new UploadFileRequest(data, purpose, filename, null);
6564
using MultipartFormDataRequestContent content = uploadFileRequest.ToMultipartRequestContent();
6665
RequestContext context = FromCancellationToken(cancellationToken);
@@ -79,25 +78,13 @@ public virtual Response<PersistentAgentFileInfo> UploadFile(Stream data, Persist
7978
Argument.AssertNotNull(data, nameof(data));
8079
Argument.AssertNotNullOrEmpty(filename, nameof(filename));
8180

82-
filename = ReplaceNonAscii(filename);
8381
UploadFileRequest uploadFileRequest = new UploadFileRequest(data, purpose, filename, null);
8482
using MultipartFormDataRequestContent content = uploadFileRequest.ToMultipartRequestContent();
8583
RequestContext context = FromCancellationToken(cancellationToken);
8684
Response response = UploadFile(content, content.ContentType, context);
8785
return Response.FromValue(PersistentAgentFileInfo.FromResponse(response), response);
8886
}
8987

90-
/// <summary>
91-
/// Remove non ASCII symbols from the file name.
92-
/// Temporary workaround of an issue when the file contains non ASCII characters.
93-
/// </summary>
94-
/// <param name="filename">The file name.</param>
95-
/// <returns>The file name with all non ASCII letters replaced.</returns>
96-
private static string ReplaceNonAscii(string filename)
97-
{
98-
return Regex.Replace(filename, @"[^\u0000-\u007F]", "~");
99-
}
100-
10188
/// <summary> Uploads a file for use by other operations. </summary>
10289
/// <param name="body"> Multipart body. </param>
10390
/// <param name="cancellationToken"> The cancellation token to use. </param>

sdk/ai/Azure.AI.Agents.Persistent/src/Custom/UploadFileRequest.Serialization.cs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
#nullable disable
55

6+
using System.Net.Http;
7+
using System.Net.Http.Headers;
68
using Azure.Core;
79

810
namespace Azure.AI.Agents.Persistent;
@@ -19,7 +21,18 @@ internal partial class UploadFileRequest : IUtf8JsonSerializable
1921
internal virtual MultipartFormDataRequestContent ToMultipartRequestContent()
2022
{
2123
MultipartFormDataRequestContent content = new();
22-
content.Add(Data, "file", Filename);
24+
ContentDispositionHeaderValue header = new("form-data") { Name = "file"};
25+
var _dataStream = new StreamContent(Data);
26+
if (System.Linq.Enumerable.Any(Filename, c => c > 127))
27+
{
28+
header.FileNameStar = Filename;
29+
}
30+
else
31+
{
32+
header.FileName = Filename;
33+
}
34+
_dataStream.Headers.ContentDisposition = header;
35+
(content.HttpContent as System.Net.Http.MultipartFormDataContent).Add(_dataStream, "file");
2336
content.Add(Purpose.ToString(), "purpose");
2437
return content;
2538
}

0 commit comments

Comments
 (0)