【问题标题】:Upload ePub file from ASP.NET MVC application从 ASP.NET MVC 应用程序上传 ePub 文件
【发布时间】:2010-11-02 09:47:26
【问题描述】:

目前,我正在将 PDF 文件和图像从我的 MVC Web 应用程序上传到 sql server 数据库。这非常有效,但是我现在希望能够上传 ePub 文件。

我试图用同一个上传者来做这件事,但希望它能工作,但这是我得到的错误:

SqlException 未被用户处理 代码。

"参数化查询 '(@FileContent varbinary(max) ,@MimeType nvarchar(4000),@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 文件格式。

任何帮助将不胜感激:)

【问题讨论】:

  • 在旁注中,迭代Request.Files 不是 ASP.NET MVC 方法。您应该使用处理文件上传的内置模型绑定工具。否则,您将遇到可移植性和可测试性问题。
  • 谢谢 bzlm,我会注意的。我从教程中遵循了这一点,但我确实意识到还有很大的改进空间。
  • asp.net/mvc 上的教程很棒。我猜你用的那个不是那里的。 :) asp.net/mvc/tutorials/getting-started-with-mvc-part1

标签: c# sql asp.net-mvc file-upload epub


【解决方案1】:

将 ePUB 作为已知类型添加到服务器的 Mime 类型列表中,我猜 mime-type 会在 db 中变为 null,这就是出现此错误的原因。

【讨论】:

  • 嗨,马扎尔!谢谢回复。目前我在我的笔记本电脑上本地工作。您知道如何配置 Visual Studio 的设置以接受 ePub 作为 MIME 类型吗?
  • @Mazhar 在代码中,mime-type 由客户端在Request.Files[upload].ContentType 中提供。您的建议需要进行一些重大的重构。
  • @Tara 问题是客户端没有提供 mime 类型,或者上传的文件以其他方式损坏或丢失信息。您不应依赖客户端提供 mime 类型,因为这可能因浏览器而异。
  • @blzm,这就是链接。不,教程不是从那里开始的 ;-) 我会看看 :) 虽然不确定他们是否有可能解决我的 ePub 问题 :-S 我只是不确定如何处理这种文件类型。
【解决方案2】:

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

感谢所有评论的人:)

【讨论】:

    猜你喜欢
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多