Итак, оказалось, что если iframe существует в DOM, когда пользователь перезагружает страницу, он снова запустит форму, поэтому я просто не добавил iframe, пока пользователь не щелкнет, чтобы отправить файл.
Полный код (некоторые относятся только к моему проекту, но идея есть:
function uploadHandler()
{
if ($.browser.safari || $.browser.opera || $.browser.msie)
{
setTimeout(uploadComplete, 5);
}
else
{
uploadComplete(this);
}
}
function uploadFile(e)
{
if($('.uploadFrame').length > 0)
{
uploadiFrameNode.remove();
}
n = 'f' + Math.floor(Math.random() * 99999);
uploadiFrameNode = $('<iframe class="uploadFrame invfr" src="about:blank" id="'+n+'" name="'+n+'"></iframe>');
uploadiFrameNode.load(uploadHandler);
$('body').append(uploadiFrameNode);
formNode.attr('action', _ajaxPath + "?drive=" + drive);
formNode.attr('target', n);
formNode.attr('method', 'POST');
formNode.attr('enctype', 'multipart/form-data');
formPathNode.val(tree[tree.length - 1].path);
}
function uploadComplete()
{
refresh(tree[tree.length - 1].path);
backToMenu();
fileReset();
}