Jerome Morris, 37, of Strathaven, Lanarkshire, pounced after offered to walk his victim home after meeting her in a bar.
The dad-of-five was living in Manchester with his partner and children at the time of the offence.
He was working in Gloucester and had checked into a hotel in the city before heading out for a drink.
The victim told a jury at Gloucester Crown Court that Morris was polite and friendly a first.
But she said he later turned violent, grabbed her by the throat and sexually assaulted her.
She said: "It was like a horror film and I have never been so scared in my life."
Jailing him, Judge Jamie Tabor QC, said he accepted the woman had initially consented to sexual activity but changed her mind when Morris turned violent.
He said Morris caused a number of injuries to the woman, adding: "When you were told to stop you didn't."
After the attack Morris appeared in a local branch of Asda looking drunk and went into the supermarket's photo booth.
Staff asked him to leave and noticed blood on his hands, trousers and trainers.
Police who were at the store on another matter then arrested him. Morris was convicted of sexual assault last month.
As well as the three and a half year jail term, Morris, who sobbed throughout the hearing, was put on the sex offenders' register for life.
He claimed the woman consented fully to what took place.
In evidence, he said he thought initially she was a man because of the way she looked and dressed.