Sachverhalt: A. Der indische Staatsangehörige A._ (geboren 1986) reiste am 4. August 2008 zu Ausbildungszwecken in die Schweiz. Er erhielt zunächst eine Kurzaufenthaltsbewilligung und ab dem 4. Februar 2009 eine Aufenthaltsbewilligung, die letztmals bis zum 28. Februar 2014 verlängert wurde. Im Februar 2014 schloss er seine Ausbildung mit einem Masterdiplom IT in E-Business ab. Am 14. Februar 2014 heiratete A._ in Dänemark die portugiesische Staatsangehörige B._ (geboren 1994), die zuvor am 5. Februar 2014 in die Schweiz eingereist war und am 13. Februar 2014 eine Aufenthaltsbewilligung EU/EFTA zwecks unselbständiger Erwerbstätigkeit erhalten hatte. Am 6. Mai 2014 wurde A._ eine Aufenthaltsbewilligung EU/EFTA zum Verbleib bei seiner Ehefrau erteilt. A._ wurde am 22. September 2017 zu seiner Ehe befragt. Mit Schreiben vom 18. Dezember 2017 gewährte ihm das Migrationsamt des Kantons Zürich das rechtliche Gehör zum beabsichtigten Widerruf seiner Aufenthaltsbewilligung wegen Vorliegens einer Scheinehe. Mit Verfügung vom 18. April 2018 widerrief das Migrationsamt seine Aufenthaltsbewilligung, da es aufgrund der Abklärungen von einer nur zur Aufenthaltssicherung eingegangenen bzw. aufrechterhaltenen Ehe ausging und einen persönlichen oder nachehelichen Härtefall verneinte. Gleichzeitig widerrief es auch die Aufenthaltsbewilligung der Ehefrau. Am 7. September 2018 liess sich A._ von seiner portugiesischen Ehefrau scheiden. B. Den gegen die Verfügung vom 18. April 2018 erhobenen Rekurs wies die Rekursabteilung der Sicherheitsdirektion des Kantons Zürich am 22. Januar 2019 ab. Die Beschwerde an das Verwaltungsgericht des Kantons Zürich blieb ebenfalls ohne Erfolg (Urteil vom 17. April 2019). C. Mit Eingabe an das Bundesgericht vom 17. Juni 2019 erhebt A._ Beschwerde in öffentlich-rechtlichen Angelegenheiten sowie subsidiäre Verfassungsbeschwerde. Er beantragt, das Urteil des Verwaltungsgerichts Zürich vom 17. April 2019 sei aufzuheben und das Migrationsamt sei anzuweisen, seine Aufenthaltsbewilligung zu belassen resp. zu verlängern. In formeller Hinsicht ersucht er um Gewährung der unentgeltlichen Rechtspflege und Verbeiständung. Der Präsident der II. öffentlich-rechtlichen Abteilung des Bundesgerichts hat der Beschwerde mit Verfügung vom 20. Juni 2019 antragsgemäss die aufschiebende Wirkung zuerkannt. Das Verwaltungsgericht des Kantons Zürich beantragt die Abweisung der Beschwerde, soweit darauf einzutreten sei, und verzichtet im Übrigen, ebenso wie die Rekursabteilung der Sicherheitsdirektion des Kantons Zürich, auf Vernehmlassung. Das Migrationsamt des Kantons Zürich und das Staatssekretariat für Migration lassen sich nicht vernehmen.