II6文件上传在MVC存储为0×0000 ...在SQL数据库(II6 File Upload in

2019-10-16 20:20发布

我有一点将文件上传到数据库中的问题。 我会后的我下面的代码片段。

即时上传到该表的结构如下:

[IDEnsayo] int NOT NULL,
[Nombre] varchar(256) NULL,
[Tipo] varchar(256) NULL,
[Longitud] int NULL,
[Contenido] image NULL

这是类

public class Archivo
{

    public string Nombre { get; set; }
    public string Tipo { get; set; }
    public long Longitud { get; set; }
    public byte[] Contenido { get; set; }

}

我可以用我的应用程序没有任何错误,但在数据库中的“Contenido”为上传文件时,文件存储“0x0000000000000000 ......”。 所有与文件上传正确的其它信息。

这是我的控制器代码:

public ActionResult Add(Ensayo Ensayo, HttpPostedFileBase uploadFile)
{
  var ensayo = new Ensayo { IDEnsayo = Ensayo.IDEnsayo};
  ensayo.Archivo.Longitud = uploadFile.ContentLength;
  ensayo.Archivo.Nombre = uploadFile.FileName;
  ensayo.Archivo.Tipo = uploadFile.ContentType;

  byte[] tempFile = new byte[uploadFile.ContentLength];
  uploadFile.InputStream.Read(tempFile, 0, uploadFile.ContentLength);

  ensayo.Archivo.Contenido = tempFile;
  ensayo.SaveArchivo();
//

其他注意事项

  1. 我使用:MVC3 + SQL Server 2000中。
  2. 当我在测试环境中使用的应用程序(本地计算机+数据库服务器)也没有问题。 文件被正确地存储。
  3. 当我使用prduction环境(Web服务器+数据库服务器)文件的应用程序不能正确保存。
  4. IIS6生产服务器上

UPDATE

随着IE9的作品,但与Chrome不。

这是我的提交表单代码:

@using (Html.BeginForm("Add", "Archivos",FormMethod.Post, new { id = "attachment",      enctype = "multipart/form-data" }))
    {         
        @Html.HiddenFor(x => Model.IDEnsayo)
        <input type="file" name="uploadFile" id="uploadFile" />

    <input type="submit" value="Guardar" class="t-button"/>

    }

如果有人可以提供帮助/意见,我会很感激它了很多。

谢谢。

Answer 1:

按你最后的评论你的文件上传问题是更有可能涉及到IIS6,事实上没有任何与SQL服务器。 IIS6有一个愚蠢的文件上传大小限制,如果它没有被正确配置。

请查看: 在IIS6增加文件上传大小限制

更具体地说为您的情况: http://www.banmanpro.com/support2/File_Upload_limits.asp



Answer 2:

问题是Chrome的版本(21.0.1171.0 DEV)。 有一个与Chrome的开发版本和IIS6使用Windows身份验证和上传文件有问题。

如果您使用Chrome 21开发提交表单,提交的文件内容将是所有零。

我下载19.0.1084.56稳定版本,问题就解决了。

欲了解更多信息http://code.google.com/p/chromium/issues/detail?id=128574



文章来源: II6 File Upload in MVC storing as 0x0000…in SQL Database