Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从ASP.NET MVC应用程序上载ePub文件_C#_Sql_Asp.net Mvc_File Upload_Epub - Fatal编程技术网

C# 从ASP.NET MVC应用程序上载ePub文件

C# 从ASP.NET MVC应用程序上载ePub文件,c#,sql,asp.net-mvc,file-upload,epub,C#,Sql,Asp.net Mvc,File Upload,Epub,目前,我正在将PDF文件和图像从MVC web应用程序上载到sql server数据库。这是完美的作品,但我现在想能够上传ePub文件 我试着用同一个上传程序来做,但徒劳地希望它能起作用,然而这是我得到的错误: 用户未处理SqlException 代码 参数化查询 “@FileContent varbinarymax ,@MimeType nvarch4000,@FileName' 需要参数“@MimeType”, 没有提供 下面是我的控制器处理上传的代码: public ActionResul

目前,我正在将PDF文件和图像从MVC web应用程序上载到sql server数据库。这是完美的作品,但我现在想能够上传ePub文件

我试着用同一个上传程序来做,但徒劳地希望它能起作用,然而这是我得到的错误:

用户未处理SqlException 代码

参数化查询 “@FileContent varbinarymax ,@MimeType nvarch4000,@FileName' 需要参数“@MimeType”, 没有提供

下面是我的控制器处理上传的代码:

public ActionResult Index()
{

    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=****;";
        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();
}
我知道这个错误对于问题是什么是不言自明的,我只是不确定如何修改代码以允许它接受ePub文件格式


任何帮助都将不胜感激:

将ePUB作为已知类型添加到服务器的Mime类型列表中,我猜Mime类型将在db中变为null,这就是引发此错误的原因

发现epub文件的mimetype是application/epub+zip。在我的应用程序中指定了这一点,而不是期望用户这样做,这似乎已经做到了。文件正在上载和下载,没有任何问题


感谢所有发表评论的人:

顺便说一句,在Request.Files上迭代不是ASP.NET MVC的方法。您应该使用处理文件上载的内置模型绑定工具。否则,您将遇到可移植性和可测试性问题。我从一个教程中了解到了这一点,但我确实意识到还有很大的改进空间。asp.net/mvc上的教程非常棒。我猜你用的那个不是从那里来的嗨,玛扎!谢谢你的回复。目前我正在本地使用笔记本电脑。您知道如何配置visual studio的设置以接受ePub作为mime类型吗?@Mazhar在代码中,mime类型由客户端在Request.Files[upload].ContentType中提供。您的建议需要进行一些重大的重构。@Tara问题在于客户端未提供mime类型,或者上载的文件已损坏或以其他方式丢失信息。您不应该依赖客户端来提供mime类型,因为这可能因浏览器而异。@blzm,这是链接。不,教程不是从那里开始的;-我将看一看:不确定他们是否可能解决我的ePub问题:-S我只是不确定如何处理这种文件类型。