1

我在将文件上传到数据库时遇到了一些问题。我将在下面发布我的代码片段。

我要上传到的表具有以下结构:

[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. 当我在生产环境(Web 服务器 + 数据库服务器)中使用该应用程序时,文件未正确保存。
  4. 生产服务器上的 IIS6

更新

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"/>

    }

如果有人可以提供帮助/建议,我将不胜感激。

谢谢。

4

2 回答 2

0

根据您最后的评论,您的文件上传问题很可能与 IIS6 有关,实际上与 SQL Server 无关。如果没有正确配置 IIS6,它有一个愚蠢的文件上传大小限制。

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

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

于 2012-06-11T13:49:05.577 回答
0

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

如果您使用 Chrome 21 dev 提交表单,则提交的文件内容将全为零。

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

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

于 2012-06-13T16:59:05.600 回答