Как поставить штамп на файл перед загрузкой с помощью IIS

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

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

Предложения?

Бонус: некоторые из этих файлов будут исполняемыми файлами, подписанными кодом. Штамповка аннулирует цифровую подпись, поэтому мне нужно будет подписать их снова после штамповки. Мысли о том, как это лучше сделать? (Я предполагаю, что получение метки времени во время процесса подписания займет слишком много времени, поэтому придется подписывать без метки времени).


person DougN    schedule 01.12.2011    source источник


Ответы (1)


Просто относитесь к нему как к любому запросу ресурса: только вместо того, чтобы отправлять обратно HTML, вы отправляете обратно соответствующие данные через поток ответа (и, надеюсь, соответствующие заголовки).

См. этот небольшой пост о том, как отправить изображение. Теперь, если штамповка не слишком агрессивна, просто прочтите файл и запишите «штампованную» версию в потоковом процессе.

Конечно, я сделал некоторые предположения относительно ресурсов, но ...

Если вы действительно нуждаетесь / хотите переходить на временные файлы (и позволяете веб-серверу выполнять обслуживание статических файлов и т. Д.), Тогда просто используйте запрос ресурса, чтобы сгенерировать файл и ответить перенаправлением. к соответствующему (теперь сгенерированному) статическому ресурсу. Если ресурс генерируется с помощью одноразового номера, и они не могут быть другими списками, тогда может быть достаточно полагаться на «безопасность через неясность», и ссылка остается действительной до тех пор, пока она не будет очищена (скажем, все файлы за 6 часов будут очищены. по случаю). Может быть достаточно создать одноразовый номер в хэше файла (например, чтобы исключить необходимость сопоставлять ID-> File в базе данных) ... но, опять же, этого может и не быть.

Удачного кодирования.

person Community    schedule 01.12.2011
comment
Я нашел сообщение, в котором показано, как быть еще более агрессивным, но ваш ответ также действителен, поэтому отметьте его. Тем, кто ищет другой вариант, обратите внимание: blogs.msdn.com/b/nikhiln/archive/2008/05/22/ - person DougN; 17.12.2011