如何将 javascript 类型的文件绑定到包含 HttpFile 的 Nancy 模型?
How Do I bind javascript type of File to a Nancy Model containing HttpFile?
我正在尝试将包含 File in typescript 的 put 请求绑定到 Nancy 的 HttpFile。该请求始终将 C# 中的 HttpFile 设置为 null。有办法吗?
@Injectable()
export class FileUploadService {
@Output() progress: EventEmitter<number> = new EventEmitter<number>();
/**
* uploads a file to the service and returns the document's id
*/
public upload(req: IUploadRequest): Observable<number> {
let promise = new Promise((resolve: any, reject: any) => {
let xhr: XMLHttpRequest = new XMLHttpRequest();
xhr.upload.onprogress = (event: any) => {
let progress = Math.round(event.lengthComputable ? event.loaded * 100 / event.total : 0);
this.progress.emit(progress);
};
xhr.onload = () => {
let json = JSON.parse(xhr.response);
resolve(<number>json.documentId);
};
xhr.onerror = () => {
reject(xhr.response);
};
xhr.onabort = () => {
reject(xhr.response);
};
xhr.open("PUT", `${environment.API_ROOT}/document`, true);
xhr.setRequestHeader(environment.AUTH_HEADER_NAME, getToken());
let formData: FormData = new FormData();
formData.append("file", <File>req.file, req.file.name);
formData.append("description", req.description);
formData.append("chapterId", req.chapterId.toString());
xhr.send(formData);
});
return Observable.fromPromise(promise);
}
}
export class IUploadRequest {
public file: File;
public description: string;
public chapterId: number;
}
我要绑定的模型...
public class FileUploadRequest
{
public long ContentSize { get; set; }
public HttpFile File { get; set; }
public string Description { get; set; }
public int ChapterId { get; set; }
}
并且在 C# 中 API...
var request = this.Bind<FileUploadRequest>();
我做错了什么? "file" 在 C# 中总是返回 null。
仅供参考...我通过进入请求本身并在 Request.File 中获取文件来解决此问题。
我正在尝试将包含 File in typescript 的 put 请求绑定到 Nancy 的 HttpFile。该请求始终将 C# 中的 HttpFile 设置为 null。有办法吗?
@Injectable()
export class FileUploadService {
@Output() progress: EventEmitter<number> = new EventEmitter<number>();
/**
* uploads a file to the service and returns the document's id
*/
public upload(req: IUploadRequest): Observable<number> {
let promise = new Promise((resolve: any, reject: any) => {
let xhr: XMLHttpRequest = new XMLHttpRequest();
xhr.upload.onprogress = (event: any) => {
let progress = Math.round(event.lengthComputable ? event.loaded * 100 / event.total : 0);
this.progress.emit(progress);
};
xhr.onload = () => {
let json = JSON.parse(xhr.response);
resolve(<number>json.documentId);
};
xhr.onerror = () => {
reject(xhr.response);
};
xhr.onabort = () => {
reject(xhr.response);
};
xhr.open("PUT", `${environment.API_ROOT}/document`, true);
xhr.setRequestHeader(environment.AUTH_HEADER_NAME, getToken());
let formData: FormData = new FormData();
formData.append("file", <File>req.file, req.file.name);
formData.append("description", req.description);
formData.append("chapterId", req.chapterId.toString());
xhr.send(formData);
});
return Observable.fromPromise(promise);
}
}
export class IUploadRequest {
public file: File;
public description: string;
public chapterId: number;
}
我要绑定的模型...
public class FileUploadRequest
{
public long ContentSize { get; set; }
public HttpFile File { get; set; }
public string Description { get; set; }
public int ChapterId { get; set; }
}
并且在 C# 中 API...
var request = this.Bind<FileUploadRequest>();
我做错了什么? "file" 在 C# 中总是返回 null。
仅供参考...我通过进入请求本身并在 Request.File 中获取文件来解决此问题。