我在设置数据库以接受文件时遇到了困难。我并不完全理解我所做的事情,这肯定是愚蠢的。我会尝试尽可能多地包含图像和描述,以确定我所做的事情,并希望能够辨别出哪些内容丢失或错误。
在SQL 2012 Management Studio中的服务器级别上。
这里是SQL 2012 Management Studio中的数据库级别
这是我在该数据库中用于插入文件并稍后使用我的asp.net应用程序检索它们的表。
string constr = ConfigurationManager.ConnectionStrings["ChangeDb"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr)) {
foreach (HttpPostedFile postedFile in ReleaseNotesFile.PostedFiles) {
string file = Path.GetFileName(postedFile.FileName);
var fileSplit = file.Split('.');
string filename = fileSplit[0];
string fileextension = fileSplit[1];
string contentType = postedFile.ContentType;
using (Stream fs = postedFile.InputStream) {
using (BinaryReader br = new BinaryReader(fs)) {
byte[] bytes = br.ReadBytes((Int32)fs.Length);
using (SqlCommand cmd = new SqlCommand("dbo.InsertFile", con)) {
try {
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@FileName", filename);
cmd.Parameters.AddWithValue("@FileExtension", fileextension);
cmd.Parameters.AddWithValue("@ChangeId", 27);
cmd.Parameters.AddWithValue("@FileType", "ReleaseNotes");
cmd.Parameters.AddWithValue("@ContentType", contentType);
cmd.Parameters.AddWithValue("@Chart", bytes);
cmd.ExecuteNonQuery();
}
catch (SqlException sqlex) {
throw new Exception("SQL Exception on inserting ReleaseNotes file. " + sqlex.Message);
}
catch (Exception ex) {
throw new Exception("Error inserting ReleaseNotes file. " + ex.Message);
}
}
}
}
}
}
这是我的c#代码后面的文件插入存储过程。
这是保存文件流的位置(ChangeGovernanceFiles)
正如我们在这里看到的那样,它实际上将我通过我的应用程序提交的文件带到了这个目录中。然而...
我已经从很多教程和资源中完成了我所做的一切,以便使用我现有的asp.net应用程序,而且我对它的理解很少。有人能够找出我失踪的东西吗?
非常感谢您的帮助
编辑,添加我的sql设置和存储过程的另一张图片,我认为可能会进一步帮助辨别缺少的内容。
EXEC sp_configure filestream_access_level, 2
RECONFIGURE
alter database ChangeGovernance
add filegroup fsGroup contains filestream;
go
alter database ChangeGovernance
add file
( NAME = 'fsChangeGovernance', FILENAME = 'G:\ChangeGovernanceFiles'
)
to filegroup fsGroup;
go
DROP TABLE ChangeGovernance.dbo.ChangeFiles
GO
CREATE TABLE ChangeGovernance.dbo.ChangeFiles
(
[ChangeFileId] [uniqueidentifier] ROWGUIDCOL NOT NULL UNIQUE DEFAULT NEWID(),
[SerialNumber] INTEGER UNIQUE,
[Chart] VARBINARY(MAX) FILESTREAM NULL,
[FileName] NVARCHAR(50) NOT NULL,
[FileExtension] NVARCHAR(10) NOT NULL,
[ChangeId] INT NOT NULL,
[FileType] NVARCHAR(50),
[ContentType] NVARCHAR(MAX)
)
GO
--Files insert stored proc
DROP PROCEDURE dbo.InsertFile
GO
CREATE PROCEDURE dbo.InsertFile
@Chart VARBINARY(MAX), @FileName NVARCHAR(50), @FileExtension NVARCHAR(10), @ChangeId INT,
@FileType NVARCHAR(50), @ContentType NVARCHAR(MAX)
AS
BEGIN
INSERT INTO dbo.ChangeFiles (Chart, FileName, FileExtension, ChangeId, FileType, ContentType)
VALUES (@Chart, @FileName, @FileExtension, @ChangeId, @FileType, @ContentType)
END
GO
我设置文件共享,文件夹,我的表和我要插入的存储过程。