You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RestSharp v110.2.0文件名编码异常问题求助

问题:RestSharp v110.2.0 上传含特殊字符文件名出现乱码,v105.2.3版本无此问题

使用RestSharp最新稳定版v110.2.0上传名为Präsentation_Export的zip文件至外部接口后,文件名变为Pr�sentation_Export,但相同功能在v105.2.3版本中可正常运行。

我的RestSharp控制器方法代码

public async Task<ApiResponse> UploadRequest(int? Id, IFormFile file, string APIEndPoint, string MethodType)
{
  ApiResponse result = new ApiResponse();
    try
    {
      var queryString = new Dictionary<string, string>() { { "access_token", AccessToken } };
                Uri uri = new Uri(string.Format(BaseURL + APIEndPoint, string.Empty));
                var requestUri = QueryHelpers.AddQueryString(uri.ToString(), queryString);

                using (var memoryStream = new MemoryStream())
                {
                    var client = new RestClient(uri);
                    await file.CopyToAsync(memoryStream);
                    var restRequest = new RestRequest(requestUri, Method.Post);
                    //restRequest.AddHeader("Content-Type", "multipart/form-data");
                    restRequest.AddOrUpdateParameter("Content-Type", "multipart/form-data", ParameterType.HttpHeader);
                    
                    restRequest.AddFile("attachment", memoryStream.ToArray(), file.FileName, file.ContentType, options: new FileParameterOptions { DisableFilenameEncoding = true, DisableFileNameStar = false });

                    if (Id != null)
                    {
                        restRequest.AddParameter("generalId", Id.Value);
                    }

                    //restRequest.RequestFormat = DataFormat.Xml;

                    var response = client.Execute(restRequest);

                    if (response.IsSuccessStatusCode)
                    {
                        string resultContent = response.Content;
                        result.Data = resultContent;
                        result.StatusCode = (int)response.StatusCode;
                        return result;
                    }
                    else
                    {

                        string resultContent = response.Content;
                        result.ExceptionObject = JsonConvert.DeserializeObject<Exception>(resultContent);
                        result.StatusCode = (int)response.StatusCode;
                        return result;

                    }
                }
                result.ExceptionObject = null;
                    result.StatusCode = 500;
                    return result;
                }
            catch (Exception ex)
            {
                result.ExceptionObject = ex;
                result.StatusCode = 500;
                return result;
            }


        }

尝试的HttpClient代码(仍存在乱码问题)

var queryString = new Dictionary<string, string>() { { "access_token", AccessToken } };
Uri uri = new Uri(string.Format(BaseURL + APIEndPoint, string.Empty));
var requestUri = QueryHelpers.AddQueryString(uri.ToString(), queryString);

var content = new MultipartFormDataContent();
var fileContent = new StreamContent(file.OpenReadStream());
fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse(file.ContentType);

content.Add(fileContent, "attachment", file.FileName);

var response = await client.PostAsync(requestUri, content);

内容的提问来源于stack exchange,提问作者Karlin Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 04:33:33