Upton hit .238 with 20 homers and 61 RBIs split between the Padres and Blue Jays in 2016. The 32-year-old stole 27 bases this past season and should add speed to a club that finished near the middle of the National League in steals in '16. Upton also has experience playing all three outfield positions.
Upton is expected to report to Triple-A Sacramento, where he will join recently signed outfielder Drew Stubbs.
The Giants were not known to have significant interest in Upton when Toronto released him on April 2, but San Francisco's left fielders have yet to record a hit through the season's first five games.
Michael Morse and Mac Williamson, originally scheduled to be a part of the team's left-field plans in 2017, are both nursing injuries. Jarrett Parker and Chris Marrero have been assigned to take their place, but are 0-for-19 with 10 strikeouts this season.