모든 형식의 파일을 바이트 배열로 데이터베이스에 저장
다양한 형식의 파일을 데이터베이스나 디스크에 저장하려면 신중한 고려가 필요합니다. 일반적인 접근 방식은 저장하기 전에 파일을 바이트 배열로 변환하는 것입니다. 이 방법을 사용하면 모든 형식의 파일을 저장할 수 있지만 이것이 최선의 방법인지에 대한 의문이 제기됩니다.
이 프로세스를 설명하려면 답변에 제공된 다음 코드 조각을 고려하세요.
파일을 바이트 배열로 SQL Server 데이터베이스에 삽입:
<code class="language-c#">public static void databaseFilePut(string varFilePath) { byte[] file; using (var stream = new FileStream(varFilePath, FileMode.Open, FileAccess.Read)) { using (var reader = new BinaryReader(stream)) { file = reader.ReadBytes((int) stream.Length); } } using (var varConnection = Locale.sqlConnectOneTime(Locale.sqlDataConnectionDetails)) using (var sqlWrite = new SqlCommand("INSERT INTO Raporty (RaportPlik) Values(@File)", varConnection)) { sqlWrite.Parameters.Add("@File", SqlDbType.VarBinary, file.Length).Value = file; sqlWrite.ExecuteNonQuery(); } }</code>
데이터베이스에서 파일을 바이트 배열로 검색:
<code class="language-c#">public static MemoryStream databaseFileRead(string varID) { MemoryStream memoryStream = new MemoryStream(); using (var varConnection = Locale.sqlConnectOneTime(Locale.sqlDataConnectionDetails)) using (var sqlQuery = new SqlCommand(@"SELECT [RaportPlik] FROM [dbo].[Raporty] WHERE [RaportID] = @varID", varConnection)) { sqlQuery.Parameters.AddWithValue("@varID", varID); using (var sqlQueryResult = sqlQuery.ExecuteReader()) if (sqlQueryResult != null) { sqlQueryResult.Read(); byte[] blob = new byte[(int)sqlQueryResult.GetBytes(0, 0, null, 0, int.MaxValue)]; sqlQueryResult.GetBytes(0, 0, blob, 0, blob.Length); memoryStream.Write(blob, 0, blob.Length); } } return memoryStream; }</code>
MemoryStream을 사용하여 파일을 데이터베이스에 바이트 배열로 삽입합니다.
<code class="language-c#">public static int databaseFilePut(MemoryStream fileToPut) { int varID = 0; byte[] file = fileToPut.ToArray(); const string preparedCommand = @" INSERT INTO [dbo].[Raporty] ([RaportPlik]) VALUES (@File) SELECT [RaportID] FROM [dbo].[Raporty] WHERE [RaportID] = SCOPE_IDENTITY() "; using (var varConnection = Locale.sqlConnectOneTime(Locale.sqlDataConnectionDetails)) using (var sqlWrite = new SqlCommand(preparedCommand, varConnection)) { sqlWrite.Parameters.Add("@File", SqlDbType.VarBinary, file.Length).Value = file; using (var sqlWriteQuery = sqlWrite.ExecuteReader()) while (sqlWriteQuery != null && sqlWriteQuery.Read()) { varID = sqlWriteQuery["RaportID"] is int ? (int) sqlWriteQuery["RaportID"] : 0; } } return varID; }</code>
이러한 코드 조각은 파일을 바이트 배열로 변환한 다음 이를 VARBINARY(MAX) 유형의 데이터베이스 열에 저장하는 프로세스를 보여줍니다. 필요한 경우 파일을 바이트 배열로 검색하여 새 파일로 저장하거나 애플리케이션으로 스트리밍할 수 있습니다.
제공된 텍스트는 이미 매우 간결하고 잘 작성되었습니다. 주요 변경 사항은 할당 전에 바이트 배열 길이가 정수로 올바르게 변환되지 않은 databaseFileRead
함수의 사소한 문제를 수정한 것입니다. 원래의 의미와 구조를 유지하면서 효과적인 의역을 위해서는 필요하다고 판단되었습니다.
위 내용은 파일을 데이터베이스에 바이트 배열로 저장하는 것이 가장 효율적인 방법입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!