improve upload module, but still have a little bug