|
Загрузка файла в базу с прогресс баром
|
|||
---|---|---|---|
#18+
Доброго времени суток! Уважаемые знатоки! Я опять поднимаю тему загрузки файла в БД и оторажения прогресса. Задача: Надо залить файл напрямую из приложения в базу MS SQL (не на веб адрес!) и отрисовать ProgressBar процесса загрузки оного. Использовать можно что угодно, но в рамках стандартного набора WinForms (а не ASP!). Сколько копаю тему не могу найти внятного решения! Очень прошу помочь! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2014, 00:57 |
|
Загрузка файла в базу с прогресс баром
|
|||
---|---|---|---|
#18+
Загружать частями? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2014, 01:55 |
|
Загрузка файла в базу с прогресс баром
|
|||
---|---|---|---|
#18+
Можно и частями. А никакого "штатного" способа нету? Если частями, то какой размер одной посылки будет оптимальным? Предполагается что будут единичные вставки записей очень редко более 5 Мб. Но при этом скорость соединения с сервером (файл один серверов много) может быть очень высокой, либо критически маленькой (один раз была чуть более 200 байт/сек). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2014, 08:54 |
|
Загрузка файла в базу с прогресс баром
|
|||
---|---|---|---|
#18+
Алексей Ку., вынесите загрузку файла целиком в отдельный поток, во время загрузки показывайте модальный диалог с ProgressBar, у которого Style = ProgressBarStyle.Marquee , и всё. От того, что вы покажете пользователю процент загрузки, быстрее эта загрузка не произойдет. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2014, 12:25 |
|
Загрузка файла в базу с прогресс баром
|
|||
---|---|---|---|
#18+
Алексей Ку., А как Вы это дело загружаете? Ну, в смысле, построчно или оптом? В первом случае - не сложно, а во втором - невозможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2014, 12:55 |
|
Загрузка файла в базу с прогресс баром
|
|||
---|---|---|---|
#18+
ShSergeАлексей Ку., А как Вы это дело загружаете? Ну, в смысле, построчно или оптом? В первом случае - не сложно, а во втором - невозможно. Поскольку выше был вопрос об оптимальном размере куска в байтах, то, думаю, там файл загружается в блоб. Т.е. одним куском. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2014, 14:09 |
|
Загрузка файла в базу с прогресс баром
|
|||
---|---|---|---|
#18+
ShSergeАлексей Ку., А как Вы это дело загружаете? Ну, в смысле, построчно или оптом? В первом случае - не сложно, а во втором - невозможно. Да не важно. Сейчас просто создаётся SqlCommand типа Insert ..., читается файл и и передаётся как параметр. Можно переделать и под кусочную. Сон Веры ПавловныАлексей Ку., вынесите загрузку файла целиком в отдельный поток, во время загрузки показывайте модальный диалог с ProgressBar, у которого Style = ProgressBarStyle.Marquee , и всё. От того, что вы покажете пользователю процент загрузки, быстрее эта загрузка не произойдет. Согласен! Так сейчас и сделано. Только вместо прогрессбара гифка вращается. Ну вроде как мы разобрались, что при загрузке оптом сделать прогресс бар невозможно. Если будем грузить кусочками, то можно сделать прогрессбар. При чём в нём будет столько уровней, на сколько по дроблена загрузка. Всё верно? Тогда другой вопрос: А можно ли отобразить скорость приёма/отдачи? Если да, то как? Опять что-то типа: сделать отдельным потоком и считать сколько кусков мы записали и приводить к секундам прошедшим по таймеру? Неужели нет стандартного такого важного инструмента? ИЛи он не такой важный и используется крайне редко? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2014, 14:13 |
|
Загрузка файла в базу с прогресс баром
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, В таблице тип данных image. Но можно сделать varbinary. Вообщем ограничений нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2014, 14:14 |
|
Загрузка файла в базу с прогресс баром
|
|||
---|---|---|---|
#18+
Алексей Ку.Тогда другой вопрос: А можно ли отобразить скорость приёма/отдачи? Если да, то как? Опять что-то типа: сделать отдельным потоком и считать сколько кусков мы записали и приводить к секундам прошедшим по таймеру?? Рядом с баром нарисуй лабел, куда периодчески вписывай скорость = partsAmount * partSize / timeElapsed; ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2014, 14:38 |
|
|
start [/forum/topic.php?fid=20&msg=38524123&tid=1403426]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 142ms |
0 / 0 |