我的页面中有文件上传控件和“上传”按钮。我正在尝试编写用于将word文件上传到我的数据库的代码。
请在下面找到代码: -
if (FileUpload1.HasFile)
{
string fileextention = System.IO.Path.GetExtension(FileUpload1.FileName);
if (fileextention == ".doc" || fileextention == ".docx")
{
string filename = System.IO.Path.GetFileName(FileUpload1.FileName);
//Upload file
FileUpload1.SaveAs(Server.MapPath("~/DocumentCollection/") + filename);
string fullpath = "DocumentCollection/" + filename;
string query = "insert into dbo.DocumentMaster(Name,Path) values(" + filename + "," + "DocumentCollection/" + filename + ");";
SqlDataAdapter objda = new SqlDataAdapter(query, objcon);
objcon.Open();
objda.SelectCommand.ExecuteNonQuery();
objcon.Close();
Label2.Text = " successfully uploaded.";
}
else
{
Label2.Text = "Selected File is not a word document file.";
}
我的数据库结构: -
CREATE TABLE [dbo].[DocumentMaster](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](100) NULL,
[Path] [varchar](100) NULL,
CONSTRAINT [PK_DocumentMaster] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
但是当我尝试上传word.docx文件时遇到错误。 word.docx已成功上传到我的应用程序中的DocumentCollection文件夹。
无法绑定多部分标识符“word.docx”。 列名称“DocumentCollection”无效。 无法绑定多部分标识符“word.docx”。
请帮帮我。
答案 0 :(得分:0)
这基本上是您发送到数据库的内容:
insert into dbo.DocumentMaster(Name,Path) values(word.docx,DocumentCollection/word.docx)
如您所见,您没有为值部分发送“字符串”。
你可以这样做:
string query = "insert into dbo.DocumentMaster(Name,Path) values('" + filename + "','" + "DocumentCollection/" + filename + "');";
所以你得到这个查询结果:
insert into dbo.DocumentMaster(Name,Path) values('word.docx','DocumentCollection/word.docx')
来解决您的问题,但您仍然非常容易受到SQL注入攻击。我强烈建议您使用参数化查询。