2009-10-05 5 views
1

Я пишу быструю веб-страницу для управления доступом к веб-репозиторию аудиофайла (записи лекций). Аудиофайлы хранятся в SAN и доступны с веб-сервера с использованием общего ресурса UNC.Принудительная загрузка файла на сетевой ресурс через IIS

Я хочу, чтобы появилось диалоговое окно «save», потому что во время тестирования мы обнаружили, что некоторые веб-браузеры затрудняют сохранение mp3-файлов. Важно, чтобы наши ученики могли сохранить файл, а не просто слушать его.

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

Сначала я попытался использовать виртуальный каталог на веб-сайте, который был аутентифицирован как пользователь домена. Однако, если я открою URL-адрес аудиофайла с помощью моей командной кнопки, веб-браузер может сразу попытаться воспроизвести его.

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

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

Любые рекомендации относительно альтернативных способов достижения моих целей?

ответ

2

При возврате файла в браузер установите тип mime как «application/x-unknown» - это приведет к тому, что браузер попросит вас скачать, так как он не знает, как его обрабатывать.

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

+0

Спасибо, это сделал трюк.Я установил типы MIME в IIS в своем виртуальном каталоге, чтобы установить расширение mp3-файла для ввода application/x-unkown, и это привело к результату, который я искал. Спасибо за ваши быстрые ответы, решение Brent также может оказаться очень полезным в будущем. – 2009-10-05 16:06:01

+1

Это не удастся с большинством распространенных типов файлов, особенно с IE. –

+0

Спасибо ... это помогло ... –

0

Мне нравится ответ ck на изменение типа mime (я бы проголосовал за него, если бы меня оценили). Это вызовет проблему без сохранения.

Вы можете изменить заголовок ответа, чтобы изменить тип пантомимы вместо использования ADODB Попробуйте следующий код ..

  Response.Clear() 
     Response.AddHeader("Content-Disposition", "attachment; filename=" & file.Name) 
     Response.AddHeader("Content-Length", file.Length.ToString()) 
     Response.ContentType = "application/octet-stream" 
     Response.WriteFile(file.FullName) 
     Response.End 'if file does not exist 

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

Попробуйте иметь взгляд на полный код здесь - http://www.xefteri.com/articles/show.cfm?id=8

Вы можете добавить Copyright Vertification чеку predownload тоже.

+0

Zipping MP3-файл - это не то, что нужно делать. MP3 уже является сжатым форматом, поэтому ему будет мало или вообще не нужно это делать, особенно учитывая, что большинство установок IIS настроены для сжатия HTTP, где клиент принимает его. Вероятно, лучшим вариантом является изменение типа mime. – Raoul

2

Лучше всего добавить следующий ответный заголовок.

Контент-распоряжение: приложение; имя файла = fname.ext

см: http://support.microsoft.com/kb/260519 Дополнительная информация

+1

Из всех решений в сети я пробовал НИ ОДНО ИЗДЕЛИЙ, СОДЕРЖАЩИХСЯ для всех браузеров. Однако это решение (изменение заголовков HTTP-ответов в IIS) - единственное, что я нашел для работы для всех браузеров, и до сих пор все мои типы файлов, аудио, изображения и видео. –

Смежные вопросы