```
upload(file: File): Observable<{hash: string; key: string}> {
return this.http
.get<{token: string}>('/api/upload', {headers: this.headers})
.pipe(
switchMap(({token}) => {
const headers = new HttpHeaders();
headers.delete('Content-Type');
const formData = new FormData();
formData.append('file', file);
formData.append('token', token);
return this.http.post<{hash: string; key: string}>(url, formData, {headers: headers});
})
);
}
```