私は現在、Webアプリケーション用のASP.NetとC#を使用して、SQLServer2008データベースにドキュメントをアップロードおよびダウンロードするためのさまざまな方法と手法を研究しています。
私はこのExcelチュートリアルを見つけました、そしてそれが同様の方法でpdfとword文書をアップロードすることに似ているかどうか疑問に思いましたか?
ありがとう
私は現在、Webアプリケーション用のASP.NetとC#を使用して、SQLServer2008データベースにドキュメントをアップロードおよびダウンロードするためのさまざまな方法と手法を研究しています。
私はこのExcelチュートリアルを見つけました、そしてそれが同様の方法でpdfとword文書をアップロードすることに似ているかどうか疑問に思いましたか?
ありがとう
このチュートリアルは、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";
ここで基本的に行われているのは、ファイルストリームがバイト配列に変換され、データベースにデータBLOBとして格納されていることです。これは、任意のファイルタイプに使用できます。上記の例のようにファイル名(または少なくとも拡張子)を保持して、ディスク上のファイルに戻すときにファイルの種類がわかるようにしてください。
共有したリンクの例を考慮して、次の検証を使用します。
switch (ext.ToLower())
{
case ".pdf":
type = "application/pdf";
break;
case ".doc":
type = "application/msword";
break;
case ".docx":
type = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
}
検討できるMSOffice2007のMIMEタイプをさらにいくつか示します。また、すべてのMIMEタイプで、より広範なリストを見つけることができます。
答えは簡単です:はい、それは似ています。
編集
あなたが見つけたリンクはサンプルであり、ファイルの内容をデータベースに保存する方法を示しています。ダウンロード時にmim eタイプを記録する限り、他の異なるファイルタイプ(pdf、doc、jpgなど)に変更できます。エンドユーザーはそれを正しく取得します
この回答は、最初にコードで 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();
}
}