Насколько я знаю, вы не можете заставить браузер загрузить файл, который он сам сгенерировал.
Однако вы можете использовать метод Canvas.getDataURL()
элемента canvas. Он возвращает данные изображения в виде PNG в кодировке base64. Вы можете загрузить это на свой сервер с помощью Ajax, чтобы сервер снова преобразовал его в обычный файл PNG (или даже другой тип файла), а затем попросил клиента загрузить изображение с сервера.
Я знаю, что это немного странно, но это легко сделать.