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

如何在C# WinForms环境下使用LINQ将PDF/Word文档上传至数据库

ICube银行应用 文件上传功能实现方案

项目资金申请表参考

项目资金申请表


前置准备

  • 先在你项目的资金申请表对应数据库表中新增2个字段:
    • BudgetFileName:类型为nvarchar(200),存储上传的文件原名(带后缀,方便后续下载识别格式)
    • BudgetFileContent:类型为varbinary(MAX),存储文件的二进制内容
  • 同步更新你的LINQ数据上下文的表结构映射
  • WinForm界面添加2个控件:OpenFileDialog(命名为openFileDialogBudget)、上传按钮(命名为btnUploadBudget),给文件选择控件设置格式过滤:openFileDialogBudget.Filter = "PDF文件|*.pdf|Word文档|*.docx;*.doc"

上传功能核心代码

using System.IO;

// 上传按钮点击事件
private void btnUploadBudget_Click(object sender, EventArgs e)
{
    if (openFileDialogBudget.ShowDialog() != DialogResult.OK) return;

    try
    {
        // 1. 读取选中文件为二进制数组
        string selectFilePath = openFileDialogBudget.FileName;
        byte[] fileBinary = File.ReadAllBytes(selectFilePath);
        string fileName = Path.GetFileName(selectFilePath);

        // 2. 用LINQ写入数据库
        // 注意替换下面的上下文、实体名、当前申请记录ID为你项目对应的值
        using (var db = new 你自己的LINQ数据上下文类名())
        {
            var currentFundApply = db.你的资金申请表实体名.FirstOrDefault(a => a.申请记录ID字段 == 当前编辑的申请ID);
            if (currentFundApply != null)
            {
                currentFundApply.BudgetFileName = fileName;
                currentFundApply.BudgetFileContent = fileBinary;
                db.SubmitChanges(); // 如果你用的是EF框架,替换为 db.SaveChanges()
                MessageBox.Show("预算文件上传成功");
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("上传失败:" + ex.Message);
    }
}

可选:文件下载功能代码(方便测试验证)

private void btnDownloadBudget_Click(object sender, EventArgs e)
{
    using (var db = new 你自己的LINQ数据上下文类名())
    {
        var currentFundApply = db.你的资金申请表实体名.FirstOrDefault(a => a.申请记录ID字段 == 当前编辑的申请ID);
        if (currentFundApply == null || currentFundApply.BudgetFileContent == null)
        {
            MessageBox.Show("未找到对应预算文件");
            return;
        }

        SaveFileDialog saveDlg = new SaveFileDialog();
        saveDlg.FileName = currentFundApply.BudgetFileName;
        if (saveDlg.ShowDialog() == DialogResult.OK)
        {
            File.WriteAllBytes(saveDlg.FileName, currentFundApply.BudgetFileContent);
            MessageBox.Show("文件已保存到:" + saveDlg.FileName);
        }
    }
}

注意事项

上述方案完全适配你期末项目的小文件上传需求,无需额外引入第三方组件,代码逻辑简单易调试。如果后续有大文件上传需求,再考虑磁盘存储+数据库存路径的方案即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 18:15:07