Уменьшенный размер загружаемого файла (изображение) - PullRequest
1 голос
/ 16 апреля 2011

Я много искал в сети, но ничего .......

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

и я не хочу принуждать пользователя к определенному ContentLength

ex: -
Размер загружаемого файла - 1 МБ (или любой другой размер) -> уменьшить его до 500 КБ

Любая помощь .... Буду благодарен.

Чтобы быть более конкретным, я хочу загружать только изображения, если это поможет .

Ответы [ 4 ]

1 голос
/ 16 апреля 2011

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

Для этой цели вы можете использовать Silverlight, Flash.(Конечно, вы не можете сделать это только с помощью JavaScript, потому что он не имеет доступа к файловой системе клиента).Вот пример реализации простой загрузки файла с использованием silverlight: Link .Вам нужно будет изменить битовый код, чтобы вырезать файл перед загрузкой.

Другой вариант - попытаться использовать Plupload .Это позволяет загружать файлы с использованием HTML5 Gears, Silverlight, Flash, предоставляя возможность частичной загрузки.Вы можете попытаться исследовать этот проект с открытым исходным кодом, чтобы адаптировать его к вашим потребностям.

(Вы также можете попробовать сжать файлы на стороне клиента перед отправкой)

Удачи.

0 голосов
/ 16 апреля 2011

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

0 голосов
/ 16 апреля 2011

Вы можете увеличить макс. Размер загрузки, добавив следующую часть к вашему web.config:

<system.web>
   <httpRuntime  maxRequestLength="102400" executionTimeout="360"/>
</system.web>

102400 == 1 ГБ

0 голосов
/ 16 апреля 2011

Если я правильно понимаю ваш вопрос, я не думаю, что это возможно (или, по крайней мере, так просто).Когда пользователь загружает файл на ваш веб-сайт, файл на самом деле представляет собой данные POST.Если вы используете такой инструмент, как Fiddler http://www.fiddler2.com/fiddler2/,, вы можете увидеть его там, закодированный Base64, если я правильно помню.Итак, пользователь уже отправил полные данные.

Я вижу, вы отметили свой вопрос как asp.net, поэтому asp.net просматривает запрос, проверяет длину сообщения по максимальному размеруразрешено (настроено в web.config) и отклонит публикацию, если пройдет слишком много времени, прежде чем вам даже разрешат ее увидеть (я пытался).

Лучше всего, я думаю, вы можете сделать (если это то, чтовы действительно должны это сделать) установите maxRequestLength в вашей веб-конфигурации на достаточно большое значение, которое не будет отклонено, а затем урежьте данные самостоятельно.

<configuration>
    <system.web>
        <httpRuntime maxRequestLength="32768" />
    </system.web>
</configuration>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...