Facebook tendenzialmente usa flash (nascosto) per l'upload dei file. In ogni caso con AJAX puoi:
  1. Inviare uno o più file (binari compresi) direttamente come "blob" (tramite il costruttore FormData()... guardati questo esempio: https://developer.mozilla.org/en-US/...t_from_scratch)
  2. Inviare uno o più file file (binari compresi) convertiti in stringa base64. In questo secondo caso l'input lo puoi ottenere tramite il costruttore FileReader() (per il quale ti rimando a quest'esempio: https://developer.mozilla.org/en-US/...sDataURL%28%29)

Il problema in entrambi i casi è l'utilizzo di due tecnologie (rispettivamente i costruttori FormData e FileReader) appartenenti al mondo dell'HTML 5.0. E che di conseguenza non ti funzioneranno mai con browser datati.