Как отметить файл перед загрузкой с IIS - PullRequest
1 голос
/ 01 декабря 2011

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

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

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

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

1 Ответ

0 голосов
/ 01 декабря 2011

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

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

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

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

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

...