Опитвам се да регистрирам кортеж в DB и да кача изображението в Amazon S3.
Разделих кода на две части: 1) Работен код и 2) Неработещ код.
Работен код означава, че работи според очакванията. Файлът с изображение е качен успешно в S3.
Неработещият код винаги се сгъва към страницата index_error, която се опитвам да разреша, но не мога да разбера къде пропускам.
Благодаря за помощта!
Работен кодекс
def index = Action {
Ok(views.html.upload_test_index("File Upload In Play"))
}
def uploadFile = Action(parse.multipartFormData) { request =>
request.body.file("fileUpload").map { video =>
val newFile = File.createTempFile("temp-uploaded-", video.filename)
video.ref.moveTo(newFile, true)
new S3Sender(newFile, video.filename).send
}.getOrElse {
Redirect(routes.Application.index)
}
Ok("File has been uploaded")
}
Неработещ код - контролер
val anuncioForm = Form(
tuple(
"label" -> nonEmptyText,
"imgName" -> text
)
)
def createAnuncio = Action(parse.multipartFormData) { implicit request =>
anuncioForm.bindFromRequest.fold(
formWithErrors => BadRequest(views.html.index_error(formWithErrors)),
{
case (label, imgName) =>
request.body.file("imgName").map { imgName =>
val newFile = File.createTempFile("temp-uploaded-", imgName.filename)
val fileName = imgName.filename
imgName.ref.moveTo(newFile, true)
new S3Sender(newFile, fileName).send
Anuncio.create(label, fileName)
}
println("criou")
Redirect(routes.Application.anuncios)
}
)
}
def anuncios = Action {
Ok(views.html.index(Anuncio.all(), anuncioForm))
}
def newAnuncio = Action {
Ok(views.html.create(anuncioForm))
}
Неработещ код - шаблон
@(anuncioForm: Form[(String, String)])
@import helper._
@main("Criar um novo anuncio") {
@form(action = routes.Application.createAnuncio, 'enctype -> "multipart/form-data") {
@inputText(anuncioForm("label"))
@*<input type="file" name="imgName">*@
@inputFile(anuncioForm("imgName"))
<input type="submit" value="Create">
}
}
Редактирано
Използвах кода по-долу, за да знам съобщението за грешка.
formWithErrors => BadRequest(views.html.index_error(formWithErrors.errorsAsJson))
Изненадващо получих съобщението по-долу. Не мога да разбера защо това съобщение?!
{"imgName":["This field is required"]}