2017-10-17 42 views
0

我试图将包含打印文件中的文件的请求绑定到Nancy的HttpFile。该请求始终将C#中的HttpFile设置为null。有没有办法做到这一点?如何将JavaScript类型的文件绑定到包含HttpFile的Nancy模型?

@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#中始终返回为空。

回答

0

只是一个FYI ...我通过进入请求本身并抓取Request.File中的文件来解决这个问题。

相关问题