Как связать тип файла javascript с моделью Nancy, содержащей HttpFile?

Я пытаюсь связать запрос на поставку, который содержит файл в машинописи с HttpFile Нэнси. Запрос всегда устанавливает HttpFile в C# на ноль. Есть ли способ сделать это?

@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>();

Что я делаю неправильно? "Файл" всегда возвращается как ноль в C#.

1 ответ

Решение

Просто к вашему сведению... Я исправил это, зайдя в сам запрос и взяв Файл в Request.File.

Другие вопросы по тегам