1

我正在尝试创建一个简单的表单,用户可以在其中输入他们的个人详细信息并上传文件。然后将用户的详细信息插入数据库,并将文件上传到特定文件夹;我让两者分开工作,但我希望它们同时工作,理想情况下使用相同的“提交”按钮和/或 POST 请求。

到目前为止,这是一个整洁的代码版本:

@using Microsoft.Web.Helpers;

<form method="POST">
    <input type="text" id="name" name="name" />

    @FileUpload.GetHtml(
        initialNumberOfFiles:1,
        allowMoreFilesToBeAdded:false,
        includeFormTag:true,
        uploadText:"Upload")               
</form>


if(IsPost) {
  var n = Request.Form["name"];

  var fileSavePath = "";
  var uploadedFile = Request.Files[0];
  string file = "afilename";

  fileType = Path.GetExtension(uploadedFile.FileName);    
  fileName = file + fileType;

  fileSavePath = Server.MapPath("~/Folder/" + fileName);
  uploadedFile.SaveAs(fileSavePath);

  using(SqlConnection con = new SqlConnection("server=.\\SQLEXPRESS;database=mydb;user id=user;password=pass;"))
  {
    string insert = "INSERT INTO Items VALUES ('" + file + "','" + n + "')";

    con.Open();
    using(SqlCommand cmd = new SqlCommand(insert,con))
    {
      SqlDataReader reader = cmd.ExecuteReader(); 
    } 
  }
}

我遇到的问题是在 post 上请求表单值时:

string insert = "INSERT INTO Items VALUES ('" + fileName + "','" + n + "')";

在上面的行中,变量'fileName'被插入到数据库中,而'n'返回空白,所以这一行变成:

string insert = "INSERT INTO Items VALUES ('afilename.jpg','')";

使用这种方法可以实现我的目标吗?

4

1 回答 1

2

尝试将您的表单标签更改为:

<form method="post" enctype="multipart/form-data">
于 2013-06-27T15:14:27.027 回答