Don't rely on timestamp to tell whether a file is modified

The timestamp of file on exernal storage may change after system reboot
Check the state of duplicate upload task

If an existing upload task has failed or been cancelled, remove it
and add a new task; Otherwise do nothing.