【问题标题】:Uploading documents in sql server 2008 using asp.net C#使用asp.net C#在sql server 2008中上传文档
【发布时间】:2012-12-04 17:15:02
【问题描述】:

我目前正在研究使用 ASP.Net 和 C# 为 Web 应用程序上传和下载文档到 sql server 2008 数据库的不同方法和技术。

我找到了这个excel tutorial,我想知道它是否类似于以类似的方式上传pdf和word文档?

谢谢

【问题讨论】:

  • 类似的方式是什么意思?你期待什么答案?

标签: c# asp.net sql-server-2008 file-upload download


【解决方案1】:

本教程适用于任何文件,而不仅仅是 excel。关键在这部分:

Stream fs = FileUpload1.PostedFile.InputStream;
BinaryReader br = new BinaryReader(fs);  //reads the   binary files
Byte[] bytes = br.ReadBytes((Int32)fs.Length);  //counting the file length into bytes
query = "insert into Excelfiledemo(Name,type,data)" + " values (@Name, @type, @Data)"; //insert query
com = new SqlCommand(query, con);
com.Parameters.Add("@Name", SqlDbType.VarChar).Value = filename1;
com.Parameters.Add("@type", SqlDbType.VarChar).Value = type;
com.Parameters.Add("@Data", SqlDbType.Binary).Value = bytes;
com.ExecuteNonQuery();
Label2.ForeColor = System.Drawing.Color.Green;
Label2.Text = "File Uploaded Successfully";

这里基本上发生的是文件流被转换为字节数组,该数组作为数据块存储在数据库中。这可用于任何文件类型。只需确保保留文件名(或至少扩展名),就像上面的示例一样,以便在将其转回磁盘上的文件时知道它是什么类型的文件。

【讨论】:

    【解决方案2】:

    考虑到您共享的链接中的示例,请使用以下验证:

    switch (ext.ToLower())  
    {
        case ".pdf": 
            type = "application/pdf"; 
            break;                 
        case ".doc":
            type = "application/msword";
            break;
        case ".docx":
            type = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
    }
    

    Here 是您可以考虑的更多 MS Office 2007 MIME 类型,在All MIME Types 您可以找到更广泛的列表。

    【讨论】:

      【解决方案3】:

      答案很简单:是的,很相似。

      编辑

      您找到的链接是一个示例,向您展示如何将文件内容存储到数据库中,它可以更改为任何其他不同的文件类型:pdf、doc、jpg 等等,只要您记录 mim e 类型当下载最终用户正确获取它时

      【讨论】:

      • 讽刺一点也不聪明;)
      【解决方案4】:

      当您首先使用带有代码的 ASP.NET MVC 4 或 5 时,此答案更合适。

      //on your view model
      public class MyViewModel
          {
              [Required]
              [DisplayName("Select File to Upload")]
              public IEnumerable<HttpPostedFileBase> File { get; set; }
          }
      // on your object class, make sure you have a data type byte[] that will store a file in a form of bytes, a byte[] data type store both Images and documents of any content type. 
          public class FileUploadDBModel
          {
              [Key]
              public int Id { get; set; }
              public string FileName { get; set; }
              public byte[] File { get; set; }
          }
      // on your view 
      <div class="jumbotron">
          @using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" }))
          {
              <div>
                  @Html.LabelFor(x => x.File)
                  @Html.TextBoxFor(x => x.File, new { type = "file" })
                  @Html.ValidationMessageFor(x => x.File)
              </div>
              <button type="submit">Upload File</button>
          }
      </div>
      
      
      //on your controller
       public ActionResult Index(MyViewModel model)
              {
                      FileUploadDBModel fileUploadModel = new FileUploadDBModel();
                      //uploading multiple files in the database
                      foreach (var item in model.File)
                      {
                          byte[] uploadFile = new byte[item.InputStream.Length];
                          item.InputStream.Read(uploadFile, 0, uploadFile.Length);
      
                          fileUploadModel.FileName = item.FileName;
                          fileUploadModel.File = uploadFile;
      
                          db.FileUploadDBModels.Add(fileUploadModel);
                          db.SaveChanges();
                      }
                  }
      

      【讨论】:

        猜你喜欢
        • 2011-09-29
        • 2012-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多