Я хочу проанализировать HTTP POST в Rocket, используя структуру. При отправке формы не работает.
Я прочитал пример тела данных и получил этот код.
#[derive(FromForm)]
struct ConvertFile {
name: String,
filename: String
}
#[post("/submit", format = "multipart/form-data", data = "<form>")]
fn submit(form: Form<ConvertFile>) {
println!("form field: {}", form.get().name);
}
Я отправляю с помощью curl:
curl -H "Content-Type: multipart/form-data" -F "name=Claus" -F "filename=claus.jpg" http://localhost:8000/submit
и консоль Rocket отвечает
multipart/form-data; boundary=------------------------8495649d6ed34d20:
=> Matched: POST /submit multipart/form-data
=> Warning: Form data does not have form content type.
=> Outcome: Forward
=> Error: No matching routes for POST /submit multipart/form-data; boundary=------------------------8495649d6ed34d2.
=> Warning: Responding with 404 Not Found catcher.
=> Response succeeded.
Я хочу отправить файл, поэтому multipart/form-data
. Пытаясь найти причину, я использовал String
в структуре, чтобы сделать ее проще. Итак, сначала он отвечает Matched:
, а затем нет подходящих маршрутов.
Этот более простой POST работает:
#[post("/convert", format = "text/plain", data = "<file>")]
fn convert_file(file: String) {
println!("file: {}", file);
}
Я использую последнюю ночную версию Rust с rustup.
Что я делаю не так?
curl
? У вас естьfile
иfilename
в этомConvertFile
, а неname
иfilename
. - person E_net4 the curator   schedule 26.07.2017