错误:当前上下文中不存在名称“Name”

2023-12-28

我已经去编辑代码了 -> 这绝不是一件好事!

该代码用于 MVC 中的文件上传器。问题是我一次上传两个文件,这意味着它们被插入到数据库中的单独行中。这是原始代码:

    public ActionResult Index()
    {
        ViewData["Message"] = "Convert your eBooks!";

        foreach (string upload in Request.Files)
        {
            if (!Request.Files[upload].HasFile1()) continue;

            string mimeType = Request.Files[upload].ContentType;
            Stream fileStream = Request.Files[upload].InputStream;
            string fileName = Path.GetFileName(Request.Files[upload].FileName);
            int fileLength = Request.Files[upload].ContentLength;
            byte[] fileData = new byte[fileLength];
            fileStream.Read(fileData, 0, fileLength);

            const string connect = @"Server=localhost;Database=Images;user id=taraw; password=siemensbs;";
            using (var conn = new SqlConnection(connect))
            {
                var qry = "INSERT INTO FileStore (FileContent, MimeType, FileName) VALUES (@FileContent, @MimeType, @FileName)";
                var cmd = new SqlCommand(qry, conn);
                cmd.Parameters.AddWithValue("@FileContent", fileData);
                cmd.Parameters.AddWithValue("@MimeType", mimeType);
                cmd.Parameters.AddWithValue("@FileName", fileName);
                conn.Open();
                cmd.ExecuteNonQuery();
            }
        }

        return View();
    }

以下是我尝试修改代码,以便单独获取文件而不是使用循环,并将它们插入到数据库表中的单行中:

    public ActionResult Index()
    {

        if (!Request.Files["FileUpload1"].HasFile1())
        {
            string mimeTypePDF = Request.Files["FileUpload1"].ContentType;
            Stream fileStreamPDF = Request.Files["FileUpload1"].InputStream;
            string fileNamePDF = Path.GetFileName(Request.Files["FileUpload1"].FileName);
            int fileLengthPDF = Request.Files["FileUpload1"].ContentLength;
            byte[] fileDataPDF = new byte[fileLengthPDF];
            fileStreamPDF.Read(fileDataPDF, 0, fileLengthPDF);
        }

            if(!Request.Files["FileUpload2"].HasFile1())
        {
                string mimeTypeCover = Request.Files["FileUpload2"].ContentType;
                Stream fileStreamCover = Request.Files["FileUpload2"].InputStream;
                string fileNameCover = Path.GetFileName(Request.Files["FileUpload2"].FileName);
                int fileLengthCover = Request.Files["FileUpload2"].ContentLength;
                byte[] fileDataCover = new byte[fileLengthCover];
                fileStreamCover.Read(fileDataCover, 0, fileLengthCover);
        }

            const string connect = @"Server=localhost;Database=Images;user id=taraw; password=siemensbs;";
            using (var conn = new SqlConnection(connect))
            {
                var qry = "INSERT INTO Book (FileContentPDF, MimeTypePDF, FileNamePDF, FileContentCover, MimeTypeCover, FileNameCover) VALUES (@FileContentPDF, @MimeTypePDF, @FileNamePDF, @FileContentCover, @MimeTypeCover, @FileNameCover)";
                var cmd = new SqlCommand(qry, conn);
                cmd.Parameters.AddWithValue("@FileContentPDF", fileDataPDF);
                cmd.Parameters.AddWithValue("@MimeTypePDF", mimeTypePDF);
                cmd.Parameters.AddWithValue("@FileNamePDF", fileNamePDF);
                    cmd.Parameters.AddWithValue("@FileContentCover", fileDataCover);
                cmd.Parameters.AddWithValue("@MimeTypeCover", mimeTypeCover);
                cmd.Parameters.AddWithValue("@FileNameCover", fileNameCover);           
                conn.Open();
                cmd.ExecuteNonQuery();
            }

        return View();
     }

现在,每个 cmd.Parameters.AddWithValue 均出现以下错误:

名称“fileDataPDF”不存在 在当前背景下

我认为这是因为它位于 IF 语句之外,但我对如何构造它有点困惑。我最终想使用 linq 将文件插入数据库,因为上述方法并不理想,但我现在的主要目标是让这一点发挥作用。 任何帮助将不胜感激:)


您需要在 if 条件范围之外声明变量。例如

    string mimeTypePDF;
    string fileNamePDF;
    byte[] fileDataPDF;

    if (!Request.Files["FileUpload1"].HasFile1())
    {
        mimeTypePDF = Request.Files["FileUpload1"].ContentType;
        Stream fileStreamPDF = Request.Files["FileUpload1"].InputStream;
        fileNamePDF = Path.GetFileName(Request.Files["FileUpload1"].FileName);
        int fileLengthPDF = Request.Files["FileUpload1"].ContentLength;
        fileDataPDF = new byte[fileLengthPDF];
        fileStreamPDF.Read(fileDataPDF, 0, fileLengthPDF);
    }

(Fwiw,我认为有更好的方法来处理这个多文件上传,但上面是处理你的问题的最简单方法。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

错误:当前上下文中不存在名称“Name” 的相关文章

  • Rx.NET 中是否有一个Subject 实现,其功能类似于BehaviourSubject,但仅在值发生更改时才发出?

    有没有Subject https learn microsoft com en us previous versions dotnet reactive extensions hh229699 v vs 103 Rx NET 中的实现在功能
  • 如何在类文件中使用 Url.Action() ?

    如何在 MVC 项目的类文件中使用 Url Action Like namespace 3harf public class myFunction public static void CheckUserAdminPanelPermissi
  • MVC3中设置下拉列表中的所选项目

    我必须为视图中的下拉列表设置所选项目 但它不起作用 View div class editor label Html LabelFor model gt model Gender div div class editor field Htm
  • 传递 constexpr 对象

    我决定给予新的C 14的定义constexpr旋转并充分利用它 我决定编写一个小的编译时字符串解析器 然而 我正在努力保持我的对象constexpr将其传递给函数时 考虑以下代码 include
  • 处理右值时的 insert 与 emplace

    std string myString std unordered set
  • RestSharp获取序列化输出

    我正在寻找一种方法来访问 AddBody 调用的序列化结果 我正在使用内置的 RestSharp 序列化器 例子 class Foo public string FooField void SendRecord var f new Foo
  • 语音识别编程问题入门

    所以 你们可能都看过 钢铁侠 其中托尼与一个名为贾维斯的人工智能系统进行交互 演示剪辑here http www youtube com watch v Go8zsh1Ev6Y 抱歉 这是广告 我非常熟悉 C C 和 Visual Basi
  • 不同 C++ 文件中的相同类名

    如果两个 C 文件具有相同名称的类的不同定义 那么当它们被编译和链接时 即使没有警告也会抛出一些东西 例如 a cc class Student public std string foo return A void foo a Stude
  • C++中判断unicode字符是全角还是半角

    我正在编写一个终端 控制台 应用程序 该应用程序应该包装任意 unicode 文本 终端通常使用等宽 固定宽度 字体 因此要换行文本 只需计算字符数并观察单词是否适合一行并采取相应的操作 问题是 Unicode 表中的全角字符在终端中占用了
  • 从网页运行 ClickOnce 应用程序,无需用户操作

    我们有一个基于 Java 的 Web 应用程序以及用 C 编写的相同应用程序 如果 java 检查器发现客户端计算机上没有安装 Java 则应该运行该应用程序 这个想法是运行 C 单击一次 http en wikipedia org wik
  • 在 .NET MAUI 中实现 TouchTracking

    我一直致力于将我们的应用程序从 Xamarin Forms 迁移到 NET MAUI 我们的应用程序几乎没有绘图功能 用户可以用手指进行绘图 我们用了TouchTrackingXamarin Forms 中的 nuget 包 但与 NET
  • 如何递归取消引用指针(C++03)?

    我正在尝试在 C 中递归地取消引用指针 如果传递一个对象 那就是not一个指针 这包括智能指针 我只想返回对象本身 如果可能的话通过引用返回 我有这个代码 template
  • 从 C# 使用 Odbc 调用 Oracle 包函数

    我在 Oracle 包中定义了一个函数 CREATE OR REPLACE PACKAGE BODY TESTUSER TESTPKG as FUNCTION testfunc n IN NUMBER RETURN NUMBER as be
  • 不可变类与结构

    以下是类与 C 中的结构的唯一区别 如果我错了 请纠正我 类变量是引用 而结构变量是值 因此在赋值和参数传递中复制结构的整个值 类变量是存储在堆栈上的指针 指向堆上的内存 而结构变量作为值存储在堆上 假设我有一个不可变的结构 该结构的字段一
  • 在 C 中使用枚举而不是 #defines 作为编译时常量是否合理?

    在 C 工作了一段时间后 我将回到 C 开发领域 我已经意识到 在不必要的时候应该避免使用宏 以便让编译器在编译时为您做更多的工作 因此 对于常量值 在 C 中我将使用静态 const 变量或 C 11 枚举类来实现良好的作用域 在 C 中
  • C++ - 多维数组

    处理多维数组时 是否可以为数组分配两种不同的变量类型 例如你有数组int example i j 有可能吗i and j是两种完全不同的变量类型 例如 int 和 string 听起来您正在寻找 std vector
  • 将 Word 转换为 PDF - 禁用“保存”对话框

    我有一个用 C 编写的 Word 到 PDF 转换器 除了一件事之外 它工作得很好 有时 在某些 Word 文件上 后台会出现一条消息保存源文件中的更改 gt 是 否 取消 但我没有对源文件进行任何更改 我只想从 Word 文件创建 PDF
  • Visual Studio 2015:v120 与 v140?

    仅供参考 Win10 x64 我今天开始尝试 Visual Studio 2015 在弄清楚如何运行 C C 部分后 我尝试加载一个大型个人项目 该项目使用非官方的glsdk http glsdk sourceforge net docs
  • MySqlConnectionStringBuilder - 使用证书连接

    我正在尝试连接到 Google Cloud Sql 这是一个 MySql 解决方案 我能够使用 MySql Workbench 进行连接 我如何使用 C 连接MySqlConnectionStringBuilder 我找不到提供这三个证书的
  • 当用户更改 Windows 中的语言键盘布局时如何通知?

    I want to show a message to user when the user changes the language keyboard layout of Windows for example from EN to FR

随机推荐