我有一個 C# API,用于讀取 pdf 檔案并將其插入到 sql-server 表中。在前端,我有一個 React 應用程式,它使用 API 來執行 CRUD 操作。
反應部分完美運行,我可以完成所有操作,并且沒有錯誤/警告。
我已經用這個查詢在我的表中插入了一些 PDF 檔案:
INSERT INTO [DEFLEGOPINION] (content,extension,title)
SELECT BulkColumn , '.pdf' , 'Title123'
FROM OPENROWSET(BULK N'C:\temp\test.pdf', SINGLE_BLOB) AS BulkColumn
SELECT CAST('string' as varbinary(max)) FOR XML PATH(''), BINARY BASE64
因此,當我嘗試打開并閱讀以這種方式插入的這些檔案時,我可以輕松地做到這一點而沒有任何問題。
另一方面,當我從 API 插入新檔案時,插入作業正常,但是當我嘗試打開檔案時,它說它的格式錯誤/損壞......
這是我嘗試從 c# api 插入檔案的方法:
connection.Open();
string[] newContent = content.Split(',');
//here I removed the 'data:application/pdf;base64' part since I read somewhere that this makes a problem and should be remove
string encodedStr = Convert.ToBase64String(Encoding.UTF8.GetBytes(content));
String sql = "INSERT INTO myTable(Id,Name,Content) values('" Guid.NewGuid() "', '"
name "', CONVERT(varbinary(max), '" newContent[1] "', 0))";
using (SqlCommand command = new SqlCommand(sql, connection))
{
command.ExecuteNonQuery();
return true;
}
//Note:Name and Content are string parameters
由于反應部分的作業原理應該是閱讀其他檔案,因此我認為那里沒有問題。
我錯過了什么?我應該更改我在 c# 端使用的方法,還是應該實作第一種方法,但使用檔案路徑(它將是動態的,我不知道用戶的檔案路徑)
uj5u.com熱心網友回復:
在此處發布此內容,以便將來可能對其他人有所幫助。
我剛剛發現必須使用引數才能從 c# api 將檔案插入 sql-server。
它是這樣的:
using (SqlCommand command = new SqlCommand(sql, connection))
{
command.Parameters.Add(new SqlParameter("@Ident", Guid.NewGuid()));
command.Parameters.Add(new SqlParameter("@Name", name));
command.Parameters.Add(new SqlParameter("@Content", file));
command.ExecuteNonQuery();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/524211.html
標籤:C#反应。网sql服务器
