Как изменить имя файла при загрузке с помощью javascript?

Сценарий добавляет ссылку для загрузки видео (на определенном сайте). Как изменить имя файла на другое при загрузке?

Example URL:
"http://website.com/video.mp4"

Example of what I want the filename to be saved as during download:
"The_title_renamed_with_javascript.mp4"
-121--1258577- Почему экземпляры std:: function имеют конструктор по умолчанию? Это, вероятно, философский вопрос, но я столкнулся со следующей проблемой: Если определить std:: function, и вы не инициализируете его правильно, ваше приложение потерпит крах, как это:...

Это, вероятно, философский вопрос, но я столкнулся со следующей проблемой:

Если определить std:: function, и вы не инициализируете ее правильно, ваше приложение потерпит крах, вот так:

typedef std::function<void(void)> MyFunctionType;
MyFunctionType myFunction;
myFunction();

Если функция передается в качестве аргумента, вот так:

void DoSomething (MyFunctionType myFunction)
   {
   myFunction();
   }

Тогда, конечно, она тоже терпит крах. Это означает, что я вынужден добавить код проверки следующим образом:

void DoSomething (MyFunctionType myFunction)
   {
   if (!myFunction) return;
   myFunction();
   }

Требование этих проверок дает мне мгновенный ответ на старые дни C, где вы также должны были проверить все аргументы указателя явно:

void DoSomething (Car *car, Person *person)
   {
   if (!car) return;      // In real applications, this would be an assert of course
   if (!person) return;   // In real applications, this would be an assert of course
   ...
   }

К счастью, мы можем использовать ссылки на C++, которые не позволяют мне записать эти чеки (предполагая, что вызывающий не передал содержимое nullptr функции:

void DoSomething (Car &car, Person &person)
   {
   // I can assume that car and person are valid
   }

Итак, почему экземпляры std:: function имеют конструктор по умолчанию? Без конструктора по умолчанию не придется добавлять проверки, как и для других обычных аргументов функции. И в тех «редких» случаях, когда вы хотите передать 'необязательный' std:: function, вы по-прежнему можете передать указатель на него (или использовать boost:: optional).

13
задан casperOne 29 April 2012 в 15:57
поделиться