Próbuję przesłać plik przy użyciu Fable-Elmish i Helperów reagujących. Nie mogę jednak ustalić, jak przekonwertować zdarzenie formularza, gdy plik zostanie wybrany na coś, co można wysłać do serwera za pomocą narzędzia Pobierz. To jest widok:Konwertuj React.FormEvent na BodyInit za pomocą Fable-Elmish
R.input [
ClassName "input-control"
Type "file"
OnChange (fun x -> FileUploaded x.target |> dispatch)
] []
Odpowiednia część mojego funkcji aktualizacji:
| FileUploaded file ->
model, Cmd.ofPromise postCsv file FetchSuccess FetchFailure
a funkcja do wywołania API z pobierania:
let postData input =
let formData = FormData.Create()
formData.append("file.csv", input?files)
let defaultProps =
[ RequestProperties.Method HttpMethod.POST
; RequestProperties.Body (formData |> unbox)]
promise {
return! Fable.PowerPack.Fetch.fetch ("/api/data") defaultProps
}
jaki sposób mogę przekonwertować React.FormEvent do BodyInit, które pobierają potrzebne?
Zaktualizowałem pytanie, aby uwzględnić mój najnowszy kod, biorąc pod uwagę Twoje sugestie. To faktycznie sprawia, że żądanie post, ale plik nie jest wliczony w cenę. Ładunek żądania wygląda następująco: ------ WebKitFormBoundaryAkHYH5XIH8vT8kea Content-Disposition: form-data; name = "file.csv" [obiekt FileList] ------ WebKitFormBoundaryAkHYH5XIH8vT8kea-- –
Proszę przeszukać swój pakiet w folderze publicznym i opublikuj wygenerowany kod. Również jeśli możesz proszę opublikuj mały projekt repro zawierający serwer; możemy go użyć do rozwiązywania problemów lub łatania deklaracji pobierania w Powerpack. –
repro jest tutaj: https://github.com/danoleary/FableFileUploadRepro –