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
相关产品推荐
相关产品推荐

