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

Dynamics 365 CRM文件上传异常:原test.pdf文件显示为untitled.txt

Dynamics 365 CRM文件上传异常:原test.pdf文件显示为untitled.txt

嘿,我仔细扒了你的上传代码,发现问题出在两个核心点上——请求方法选错了,以及没匹配上Dynamics 365 Web API对文件上传的特殊要求,下面给你一步步理清楚:

问题根源

  • 错误使用PatchAsync请求:Dynamics 365的文件类型字段(不管是自定义文件列还是笔记的附件),都需要用PUT请求来完成内容上传。PATCH是用来更新实体的普通字段的,根本不适合处理媒体内容替换,这直接导致系统没读取到你设置的文件名,默认生成了untitled.txt。
  • Content-Disposition头的作用被忽略:虽然你设置了文件名,但因为请求方法不对,这个头的信息根本没被系统正确解析。

修正后的代码

我把关键部分调整好了,你直接替换测试就行:

public async Task<bool> UploadFile(string entityName, string recordId, string columnName, string base64String)
{
    string baseUrl = $@"{serviceUrl}{entityName}({recordId})/{columnName}";

    using (var client = crmConfig.BuildClient())
    {
        client.DefaultRequestHeaders.Add("OData-MaxVersion", "4.0");
        client.DefaultRequestHeaders.Add("OData-Version", "4.0");

        string fileName = "test.pdf";
        // 建议用对应文件的精准MIME类型,pdf用application/pdf比通用的octet-stream更稳妥
        string contentType = "application/pdf";
        byte[] fileBytes = Convert.FromBase64String(base64String);

        ByteArrayContent fileContent = new ByteArrayContent(fileBytes);
        fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
        {
            FileName = fileName,
        };
        fileContent.Headers.ContentType = new MediaTypeHeaderValue(contentType);

        // 最关键的修改:把PatchAsync换成PutAsync
        HttpResponseMessage response = await client.PutAsync(baseUrl, fileContent);

        if (response.IsSuccessStatusCode)
        {
            Console.WriteLine("File uploaded successfully.");
            return true;
        }
        else
        {
            Console.WriteLine("Error uploading the file. Status code: " + response.StatusCode);
            return false;
        }
    }
}

额外提醒

  • 要确认columnName是Dynamics 365里文件字段的逻辑名称,不是显示名称。比如你界面上叫“合同附件”,逻辑名称可能是new_contractattachment。
  • 上传其他类型文件时,记得同步改contentType为对应MIME类型(比如docx用application/vnd.openxmlformats-officedocument.wordprocessingml.document),这样CRM也能正确识别文件类型。

备注:内容来源于stack exchange,提问作者han na

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 12:55:31