Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Где и как лучше временно хранить файл ?
|
|||
|---|---|---|---|
|
#18+
Всем привет. Пользователь должен поработать со списокм файлов и после одним махом отправить все загруженные файлы в базу. Для работы со списком выбрал 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; " вообще не адекватный подход. Можно хранить бинарные данные в дататабле ? Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2014, 09:05 |
|
||
|
Где и как лучше временно хранить файл ?
|
|||
|---|---|---|---|
|
#18+
antihacker777, несколько десятков веток на форуме, пора бы уже проявить уважение к отвечающим научиться оформлять свои сообщения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2014, 09:09 |
|
||
|
Где и как лучше временно хранить файл ?
|
|||
|---|---|---|---|
|
#18+
Извини браток. Следующий раз постараюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2014, 09:10 |
|
||
|
Где и как лучше временно хранить файл ?
|
|||
|---|---|---|---|
|
#18+
Можно было бы хрнаить список путей через FileUploadFLD. Но Мозилла не возвращает пути через этот метод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2014, 09:13 |
|
||
|
Где и как лучше временно хранить файл ?
|
|||
|---|---|---|---|
|
#18+
antihacker777 Пользователь должен поработать со списокм файлов и после одним махом отправить все загруженные файлы в базу. кто нить понял смысл формулировки? проблема в том что ты не можешь отослать файлы или в том чтоб сохранить в бд? п.с. господи тебя кто научил хранить глобально данные которые в этом не нуждаются судя по задаче? да еще и не типизировано, открой для себя типизированы коллекции жить станет проще и приятнее. Ну и хелперы по работе с ado не большие сделай, чтоб один и тот же лапше код не писать( открой dapper посмотри как он оборачивает ado чтоль для примера хелпера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2014, 10:01 |
|
||
|
Где и как лучше временно хранить файл ?
|
|||
|---|---|---|---|
|
#18+
Задача можно хранить бинарные данные в Datatable ? Если да то как. Знаешь или нет ? А глобальные в целом по проекту нужны. Ты просто видишь кусок кода. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2014, 10:32 |
|
||
|
Где и как лучше временно хранить файл ?
|
|||
|---|---|---|---|
|
#18+
antihacker777, ... вы бы понятнее объяснились, что вы подразумеваете под "загрузка"/"выгрузка" и т.д. ... Если вам нужно что-то типа multiple upload, так для этого есть свои костыли, напр., джава-скриптом добавлять список upload-контролов, а потом обрабатывать этот список в коде через Request.Files ... И вовсе не надо держать бинарный контент в DataTable для последующей загрузки его в базу ... Если у вас файлы уже на сервере - так просто пути к ним в виде ссылок ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2014, 11:45 |
|
||
|
Где и как лучше временно хранить файл ?
|
|||
|---|---|---|---|
|
#18+
antihacker777Задача можно хранить бинарные данные в Datatable ? да antihacker777Если да то как. может кто то из форуманч меня осудить потому что я не даю ответа напрямую, а предлагаю другое решение. Но я не буду предлагать варианта, который считаю плохим. Вариант с типизированным списком(см. ниже), хотя вопрос глобальности меня смущает. antihacker777 Знаешь или нет ? не дерзи. и воспринимай критику правильно ибо не надо писать плохих решений, пиши так чтоб после тебя другим было приятно работать также, а не написал и забыл. antihacker777А глобальные в целом по проекту нужны хм поправь меня что твое "хранилище" используется только тут. я уже вижу во 2 посте твоем понятие глобальное. парень ты делаешь плохую архитектуру с непонятными глобальными элементами + особенно на datatable, что тебе хотя бы мешает сделать так для хранения информации: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. и тогда ты выкинешь Datatable к чертям и надеюсь ты увидел профит от типизации, если нет то тоска/печаль antihacker777Ты просто видишь кусок кода. Так подавай лучше информацию и судя по всем твоим постам парень, твои куски кода одинаковые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2014, 11:53 |
|
||
|
Где и как лучше временно хранить файл ?
|
|||
|---|---|---|---|
|
#18+
antihacker777, также ты можешь файлы на диске в папке хранить, а в памяти держать только названия/путь до них. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2014, 11:55 |
|
||
|
Где и как лучше временно хранить файл ?
|
|||
|---|---|---|---|
|
#18+
handmadeFromRu , да речи нет. Я всегда выбираю лучший. Свой чужой без разницы. Сейчас изучаю твой ворянт. Пытаюсь понять суть. И вовсе ни какой я не дерзкий ) Критика не проблема. Я даже самокритичный ) carrotik , суть задачи не охота грузить сервер. Пусть пользователь у себя поработает с выбранными файлами. Пусть грузит клиентскую станцию. А в сервер уже то что он выбрал оканчательно. Придется быть таким пидантичным и разрываться между удобстовм и производительностью. Потому что сайтом будут пользоваться в основном с планшета или с сотового, где дисплей позволяет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2014, 12:52 |
|
||
|
Где и как лучше временно хранить файл ?
|
|||
|---|---|---|---|
|
#18+
antihacker777одним махом отправить все загруженные файлы в базу. antihacker777сайтом будут пользоваться в основном с планшета или с сотового На планшетах и сотовых операционная система разная, где-то будет мультизагрузка работать, где-то не будет. Самое простое решение - пользователь добавляет файлы в архив и отправляет одним файлом на сервер. И куры сыты, и свиньи в масле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2014, 14:29 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=38725192&tid=1357057]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
31ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
| others: | 230ms |
| total: | 348ms |

| 0 / 0 |
