Мы успешно добавляем текстовые документы в наш SQL Server (столбец varbinary) с использованием некоторых веб-форм, а затем хотим, чтобы некоторые наши сотрудники могли их загружать.
У нас есть некоторый код для его отображения, но иногда он отображается (в моем локальном окружении), иногда нет, но затем, когда он запускается в производство. Итак, мы просто хотим скачать его, не важно, открывается ли он или нет (если у вас не установлен Word), мы просто хотим загрузить его, что-то вроде «Сохранить как ... . "функция. Потому что в моей локальной среде он работает хорошо, но когда он запускается на сервере IIS, мы не можем получить файл (я полагаю, это потому, что он автоматически открывает WORD).
Вот код для его получения.
public string showDoc(int id, int numRef)
{
string fileName = Path.GetTempFileName() + ".docx";
Db.Open();
string cuerito = "select doc from tbl_references where [userId]=@id and [refNum]=@numRef";
SqlCommand command = new SqlCommand(cuerito, base.Db);
command.Parameters.AddWithValue("@id", id);
command.Parameters.AddWithValue("@numRef", numRef);
using (SqlDataReader dr = command.ExecuteReader())
{
while (dr.Read())
{
int size = 1024 * 1024;
byte[] buffer = new byte[size];
int readBytes = 0;
int index = 0;
using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None))
{
while ((readBytes = (int)dr.GetBytes(0, index, buffer, 0, size)) > 0)
{
fs.Write(buffer, 0, readBytes);
index += readBytes;
}
}
}
}
Db.Close();
return fileName;
}
Есть ли способ в C # просто сделать это? Не отображать, а загружать только с SQL Server?
EB.