É possível usar o Ajax para fazer upload de arquivos?

Eu não quero usar o jQuery, mas gostaria de usar o Ajax para fazer upload de arquivos. Isso é possível?

Se assim for, onde posso encontrar informações / tutorial sobre isso?

Não, não é possível fazer isso com javascript.

Para dar a sensação de ‘AJAX’, no entanto, você pode enviar um formulário para um iframe oculto e enviar os resultados do script para ele e, em seguida, processar a partir daí. Google ajax iframe upload e começar de lá.

Se você estiver usando jQuery, há também o Form plugin que irá criar automaticamente este iframe para você se o seu formulário tiver algum campo de arquivo. Eu não usei isso para fazer isso, mas ouvi coisas boas.

Como apontado nos comentários, você também pode usar algo como o muito popular SWFUpload para realizar o efeito desejado com o Flash.

Incase alguém está encontrando esta questão muito mais tarde: sim, isso é possível com JavaScript agora.

O HTML5 definiu duas novas APIs que você usa em conjunto para fazer isso: arrastar e soltar a API e a API de arquivos. Você pode usar o jQuery para interagir com as APIs efetivamente permitindo que as pessoas arrastem e soltem arquivos para upload.

Aqui está um tutorial sobre como fazer isso.

O código atualmente funciona no Chrome 6+ e no Firefox 3.6+, Safari 6 e IE 10. Se você precisar do suporte ao Safari 5, o código permanecerá exatamente o mesmo, mas usará o object FormData para a lista de arquivos carregados (mais informações no postar).

O Opera suporta a API File a partir de 11, mas não a API DnD, a operação de soltar não inicia o upload, mas o ajuda a obter access ao arquivo com a API. Eu imagino que em 12 eles acabarão com o suporte para a API do DnD.

01-20-14 Atualização: Todos os principais navegadores implementam todas as APIs padrão agora, portanto, este tutorial funciona em todos os navegadores.

Eu uso o swfupload para vários uploads tipo ajax (seu javascript / flash)

Aqui está um pequeno detalhe sobre como o Gmail faz isso, usando um iframe:

http://www.sajithmr.com/upload-files-like-gmail/

Supondo que você esteja usando Java, o DWR versão 3.0 (atualmente no RC1) tem suporte para upload / download de arquivos binários, o que torna o problema trivialmente fácil. Eu não tive a chance de experimentar isso, mas usamos DWR extensivamente com total sucesso; é um ótimo kit de ferramentas do Ajax.

http://directwebremoting.org/blog/joe/2008/12/16/dwr_version_3_0_release_candidate_1.html

Estritamente falando, há possibilidades de fazer uploads reais de arquivos AJAX , mas isso só é possível no Firefox 3+, Safari 4 e Chrome 2. Em todos os outros navegadores, você deve usar uma solução alternativa como a técnica iframe ou um uploader baseado em Flash.

Não usei isso pessoalmente, mas o Ajax Uploader é um componente que eu encontrei recentemente e que diz que ele pode fazer uploads de arquivos dentro de um UpdatePanel (supondo que você esteja usando o ASP.NET).