Я думаю, что существуют различные способы сделать это. Так как я не знаком с asp, я могу только дать Вам некоторые подсказки для проверки на определенный тип файла:
1) безопасный путь: получите больше информаций о заголовке типа файла, который Вы хотите передать. проанализируйте загруженный файл и сравните заголовки
2) быстрый путь: разделите название файла в две части-> название файла и окончание файла. проверьте окончание файла и сравните его с типом файла, Вы хотите позволить быть загруженными
надежда, которой это помогает:)
Как вы правильно заметили, метод async_wait принимает функцию обработчика, которая принимает один параметр (const boost::system::error_code&). Но в примере Timer.4 вызов async_wait передается через boost bind следующим образом:
timer_.async_wait(boost::bind(&printer::print, this));
The boost::bind возвращает объект функции, который ссылается на метод print для класса print для объекта, на который ссылается this. Объект этой функции вызывается методом async_wait с параметром ошибки (так как это та сигнатура, которую он ожидает). Но параметр ошибки игнорируется, так как на него не ссылается bind.
Официальная boost::bind документация предоставляет более подробную информацию по boost::bind. Смотрите также статью How the Boost Bind Library Can Improve Your C++ Programs (возможно, есть еще много статей, но я нашел эту статью очень полезной)
.Вы указываете в вызове async_wait, какие параметры принимает ваша функция обратного вызова, используя заполнители. Проверьте предложение непосредственно над вызовом async_wait на странице, на которую вы ссылаетесь:
Вы заметите, что заполнитель boost :: asio :: placeholder :: error здесь не указан, поскольку функция-член print не принимает объект ошибки в качестве параметра.
Найдите «заполнитель» в этом примере , и вы увидите, как это сделать.