¿Cómo puedo subir archivos de forma asíncrona?

Me gustaría subir un archivo de forma asíncrona con jQuery. Este es mi HTML:

<span>File</span>
<input type="file" id="file" name="file" size="10"/>
<input id="uploadbutton" type="button" value="Upload"/>

Y aqui miJquery código:

$(document).ready(function () {
    $("#uploadbutton").click(function () {
        var filename = $("#file").val();

        $.ajax({
            type: "POST",
            url: "addFile.do",
            enctype: 'multipart/form-data',
            data: {
                file: filename
            },
            success: function () {
                alert("Data Uploaded: ");
            }
        });
    });
});

En lugar de cargar el archivo, solo obtengo el nombre del archivo. ¿Qué puedo hacer para solucionar este problema?

Solución actual

Estoy usando eljQuery Form Plugin para subir archivos.

Respuestas a la pregunta(30)

Su respuesta a la pregunta