upload di file può essere fatto su AJAX (come di xhr2 - se è necessario supportare i vecchi browser, usare qualcosa come jQuery-File-Upload, c'è a good tutorial here di utilizzarlo solo per fare la parte di upload, e non usando l'interfaccia utente di Blueimp.) Questo è correlato alla parte "senza inviare manualmente il modulo" della tua domanda. Sarà comunque necessario interagire con un elemento di caricamento file per scegliere il file, ed è qui che si utilizza page.uploadFile()
.
Per eseguire esclusivamente da JavaScript, senza "interagire con alcun elemento sulla pagina", è possibile utilizzare page.evaluate() per eseguire alcuni JavaScript personalizzati. Potrebbe quindi utilizzare File Reader API per trovare il file sul disco locale, archiviarlo in un blob, quindi caricare il blob su AJAX. Il WebKit in PhantomJS (più o meno equivalente a Chrome 13) dovrebbe funzionare, poiché apparentemente l'API FileReader è presente da Chrome 6.
(BTW, se tutto ciò che si vuole fare è caricare un file su un server usando uno script senza testa , PhantomJS è eccessivo e potresti usare curl
. Ma suppongo che tu voglia usare PhantomJS per qualche altra ragione!)
fonte
2013-12-08 06:09:46
Hai trovato qualche soluzione a questo? – themiurgo
@Ros: sembrava che tu avessi l'inizio di una possibile risposta lì, per favore vedi se riesci a riformulare la frase in modo più chiaro. –