powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Где и как лучше временно хранить файл ?
11 сообщений из 11, страница 1 из 1
Где и как лучше временно хранить файл ?
    #38725186
antihacker777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. Пользователь должен поработать со списокм файлов и после одним махом отправить все загруженные файлы в базу.

Для работы со списком выбрал GridDataView. Ну и естественно датасуросм выбрал Datatable.

Вот добавляю в Дататабле

if (FileUploadFLD.FileName != "")
{
DataRow dr = Global.Mail.AttachmentDT.NewRow();
dr["FileName"] = FileUploadFLD.FileName;

//Stream FS = FileUploadFLD.PostedFile.InputStream;

BinaryReader br = new BinaryReader(FileUploadFLD.PostedFile.InputStream);

Byte[] bytes = br.ReadBytes((Int32)FileUploadFLD.PostedFile.InputStream.Length);

dr["FSName"] = bytes;
Global.Mail.AttachmentDT.Rows.Add(dr); AttachmentGRW.DataBind();
}

Вот так в базу

private byte[] ObjectToByteArray(Object obj)
{
if (obj == null)
return null;
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, obj);
return ms.ToArray();
}


foreach (DataRow dr in Global.Mail.AttachmentDT.Rows)

{
[FoundRecipientsGRW.SelectedIndex].Value.ToString())
{
SqlCommand cmdFileUpload = new SqlCommand();
cmdFileUpload.Connection = cn;
cmdFileUpload.CommandText = "INSERT INTO AttachmentTBL(FileAttachment) VALUES(@FileAttachment)";
cmdFileUpload.Parameters.Add("@FileAttachment", System.Data.SqlDbType.VarBinary).Value = ObjectToByteArray(dr["FSName"]);

cmdFileUpload.ExecuteNonQuery();
}
}


Вот так загружаю

private DataTable GetData(SqlCommand cmd)
{
DataTable dt = new DataTable();
String strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["3BinsDBCINSTRING"].ConnectionString;
SqlConnection con = new SqlConnection(strConnString);
SqlDataAdapter sda = new SqlDataAdapter();
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
try
{
con.Open();
sda.SelectCommand = cmd;
sda.Fill(dt);
return dt;
}
catch
{
return null;
}
finally
{
con.Close();
sda.Dispose();
con.Dispose();
}
}

DataTable dt = GetData(com);

if (dt != null)

{

Byte[] bytes = (Byte[])dt.Rows[0]["FileAttachment"];
Response.Buffer = true;
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
// Response.ContentType = ReturnExtension(dt.Rows[0]["ObjImageType"].ToString());
Response.AddHeader("content-disposition", "attachment;filename=" + dt.Rows[0]["FileName"].ToString());
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();

}

При выгрузке файла получается файл файл размером меньше. Думаю загружю через дататабле не правильно. Потому что когда загружаю вот так и читаю

Stream fs = FileUploadFLD.PostedFile.InputStream;

BinaryReader br = new BinaryReader(fs);

Byte[] bytes = br.ReadBytes((Int32)fs.Length);

SqlCommand cmdFileUpload = new SqlCommand();
cmdFileUpload.Connection = cn;
cmdFileUpload.CommandText = "INSERT INTO AttachmentTBL(FileAttachment) VALUES(@FileAttachment)";
cmdFileUpload.Parameters.Add("@FileAttachment", System.Data.SqlDbType.VarBinary).Value = bytes;

cmdFileUpload.ExecuteNonQuery();


То файл здоровый. Где ошибься ? Может вообще не то делаю ? Может это " dr["FSName"] = bytes;
" вообще не адекватный подход. Можно хранить бинарные данные в дататабле ?


Спасибо
...
Рейтинг: 0 / 0
Где и как лучше временно хранить файл ?
    #38725192
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antihacker777,

несколько десятков веток на форуме, пора бы уже проявить уважение к отвечающим научиться оформлять свои сообщения
...
Рейтинг: 0 / 0
Где и как лучше временно хранить файл ?
    #38725194
antihacker777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извини браток. Следующий раз постараюсь.
...
Рейтинг: 0 / 0
Где и как лучше временно хранить файл ?
    #38725196
antihacker777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно было бы хрнаить список путей через FileUploadFLD. Но Мозилла не возвращает пути через этот метод.
...
Рейтинг: 0 / 0
Где и как лучше временно хранить файл ?
    #38725232
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antihacker777 Пользователь должен поработать со списокм файлов и после одним махом отправить все загруженные файлы в базу.
кто нить понял смысл формулировки? проблема в том что ты не можешь отослать файлы или в том чтоб сохранить в бд?

п.с.
господи тебя кто научил хранить глобально данные которые в этом не нуждаются судя по задаче? да еще и не типизировано, открой для себя типизированы коллекции жить станет проще и приятнее. Ну и хелперы по работе с ado не большие сделай, чтоб один и тот же лапше код не писать( открой dapper посмотри как он оборачивает ado чтоль для примера хелпера.
...
Рейтинг: 0 / 0
Где и как лучше временно хранить файл ?
    #38725265
antihacker777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача можно хранить бинарные данные в Datatable ? Если да то как. Знаешь или нет ? А глобальные в целом по проекту нужны. Ты просто видишь кусок кода.

Спасибо.
...
Рейтинг: 0 / 0
Где и как лучше временно хранить файл ?
    #38725348
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antihacker777,

... вы бы понятнее объяснились, что вы подразумеваете под "загрузка"/"выгрузка" и т.д. ... Если вам нужно что-то типа multiple upload, так для этого есть свои костыли, напр., джава-скриптом добавлять список upload-контролов, а потом обрабатывать этот список в коде через Request.Files ... И вовсе не надо держать бинарный контент в DataTable для последующей загрузки его в базу ... Если у вас файлы уже на сервере - так просто пути к ним в виде ссылок ...
...
Рейтинг: 0 / 0
Где и как лучше временно хранить файл ?
    #38725361
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antihacker777Задача можно хранить бинарные данные в Datatable ?
да

antihacker777Если да то как.
может кто то из форуманч меня осудить потому что я не даю ответа напрямую, а предлагаю другое решение. Но я не буду предлагать варианта, который считаю плохим. Вариант с типизированным списком(см. ниже), хотя вопрос глобальности меня смущает.

antihacker777 Знаешь или нет ?
не дерзи. и воспринимай критику правильно ибо не надо писать плохих решений, пиши так чтоб после тебя другим было приятно работать также, а не написал и забыл.

antihacker777А глобальные в целом по проекту нужны
хм поправь меня что твое "хранилище" используется только тут. я уже вижу во 2 посте твоем понятие глобальное. парень ты делаешь плохую архитектуру с непонятными глобальными элементами + особенно на datatable, что тебе хотя бы мешает сделать так для хранения информации:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
class VirtualStorage:List<VirtualStorageItem>
{
}

class VirtualStorageItem
{
public string FileName{get;set;}
public byte[] FSName{get;set;}
}


и тогда ты выкинешь Datatable к чертям и надеюсь ты увидел профит от типизации, если нет то тоска/печаль

antihacker777Ты просто видишь кусок кода.
Так подавай лучше информацию и судя по всем твоим постам парень, твои куски кода одинаковые.
...
Рейтинг: 0 / 0
Где и как лучше временно хранить файл ?
    #38725365
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antihacker777,
также ты можешь файлы на диске в папке хранить, а в памяти держать только названия/путь до них.
...
Рейтинг: 0 / 0
Где и как лучше временно хранить файл ?
    #38725495
antihacker777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
handmadeFromRu , да речи нет. Я всегда выбираю лучший. Свой чужой без разницы. Сейчас изучаю твой ворянт. Пытаюсь понять суть. И вовсе ни какой я не дерзкий ) Критика не проблема. Я даже самокритичный )

carrotik , суть задачи не охота грузить сервер. Пусть пользователь у себя поработает с выбранными файлами. Пусть грузит клиентскую станцию. А в сервер уже то что он выбрал оканчательно.

Придется быть таким пидантичным и разрываться между удобстовм и производительностью. Потому что сайтом будут пользоваться в основном с планшета или с сотового, где дисплей позволяет.
...
Рейтинг: 0 / 0
Где и как лучше временно хранить файл ?
    #38725629
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antihacker777одним махом отправить все загруженные файлы в базу.

antihacker777сайтом будут пользоваться в основном с планшета или с сотового

На планшетах и сотовых операционная система разная, где-то будет мультизагрузка работать, где-то не будет. Самое простое решение - пользователь добавляет файлы в архив и отправляет одним файлом на сервер. И куры сыты, и свиньи в масле.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Где и как лучше временно хранить файл ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]