Sử dụng này để đọc các tập tin vào một mảng byte:
// Old fashioned way
public static byte[] ReadFile(string filePath)
{
byte[] buffer;
FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
try
{
int length = (int)fileStream.Length; // get file length
buffer = new byte[length]; // create buffer
int count; // actual number of bytes read
int sum = 0; // total number of bytes read
// read until Read method returns 0 (end of the stream has been reached)
while ((count = fileStream.Read(buffer, sum, length - sum)) > 0)
sum += count; // sum is a buffer offset for next reading
}
finally
{
fileStream.Close();
}
return buffer;
}
hoặc
// Thanks Magnus!
byte[] data = System.IO.File.ReadAllBytes(filePath);
Sau đó lưu dữ liệu hình ảnh sử dụng này (Tôi đang sử dụng một lớp hình ảnh "dụ" có chứa của tôi thông tin hình ảnh và mảng byte trong instance.Data):
using(SqlCommand cm = new SqlCommand("SaveImage", connection, transaction)){
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.Add(new SqlParameter("@Id", SqlDbType.Int,0, ParameterDirection.InputOutput, false, 10, 0, "Id", DataRowVersion.Current, (SqlInt32)instance.Id));
cm.Parameters.Add(new SqlParameter("@Title", SqlDbType.NVarChar,50, ParameterDirection.Input, false, 0, 0, "Title", DataRowVersion.Current, (SqlString)instance.Title));
if (instance.Data.Length > 0)
{
cm.Parameters.Add(new SqlParameter("@Data", SqlDbType.VarBinary,instance.Data.Length, ParameterDirection.Input, false, 0, 0, "Data", DataRowVersion.Current, (SqlBinary)instance.Data));
}
else
{
cm.Parameters.Add(new SqlParameter("@Data", SqlDbType.VarBinary,0, ParameterDirection.Input, false, 0, 0, "Data", DataRowVersion.Current, DBNull.Value));
}
cm.ExecuteNonQuery();
)
Và đây là một ví dụ được lưu trữ thủ tục:
CREATE PROCEDURE SaveImage
(
@Id int OUTPUT
,@Title nvarchar(50)
,@Data varbinary(MAX)
)
AS
SET NOCOUNT ON
SET XACT_ABORT ON
IF @Id IS NULL OR @Id <= 0
BEGIN
SELECT @Id = ISNULL(MAX([Id]),0) + 1 FROM [dbo].[Images]
END
INSERT INTO [dbo].[Images] (
[Id]
,[Title]
,[Data]
) VALUES (
@Id
,@Title
,@Data
)
Vui lòng hiển thị mã bạn đang sử dụng để nhập hình ảnh. –
Bạn có đang chèn biểu diễn base64 hay gì đó không? Có vẻ như đối tượng 'SqlParameter' bạn đang sử dụng được định cấu hình không chính xác. – Tejs