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

C#保存图片到网络共享文件夹后提示不是有效位图文件求助

问题原因及修复方案
  • 首先排除上游字节流本身的问题:先将imageByteArray写入本地磁盘测试是否能正常打开,如果本地打开也报错,说明字节流本身不完整或格式错误,需要排查上游图片转字节流的逻辑。
  • 如果本地测试字节流正常,问题出在写入网络共享路径的逻辑上,常见的问题点和修改如下:
    1. 避免手动拼接路径出错,使用Path.Combine处理路径拼接
    2. 无需额外套一层MemoryStream中转,直接将字节数组写入文件流即可,避免流指针位置异常问题
    3. 增加强制刷写逻辑,确保网络写入的内容完全落地到磁盘

修改后的代码如下:

string sDir = @"\\Q1875G\Vehicle";
NetworkCredential NCredentials = new NetworkCredential("FOLDER_ACCESS_USER", "Welcome@2020");
using (new NetworkConnection(sDir, NCredentials))
{
    string dirPath = Path.Combine(sDir, "483");
    if (!Directory.Exists(dirPath))
        Directory.CreateDirectory(dirPath);
    string fileName = "add_274400.jpg";
    string fullPath = Path.Combine(dirPath, fileName);
    byte[] byteArrayIn = imageByteArray;

    // 直接写入字节数组,无需MemoryStream中转
    using (var fs = new FileStream(fullPath, FileMode.Create, FileAccess.Write))
    {
        fs.Write(byteArrayIn, 0, byteArrayIn.Length);
        // 强制刷写缓存到磁盘,适配网络共享场景
        fs.Flush(true);
    }
}
  • 如果修改后还是有问题,可额外排查以下两点:
    1. 网络共享文件夹的权限是否有完整的写入权限,是否存在配额限制导致文件写入被截断
    2. 检查图片文件的大小和byteArrayIn.Length是否一致,如果文件大小小于字节数组长度,说明网络传输过程中数据被截断,可增加写入完成后的长度校验逻辑

内容的提问来源于stack exchange,提问作者M.G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:15:04