在文件上传的form中,要设置 enctype="multipart/form-data"
MyUpload.scalate:
form(method="post" action={url[MyUpload]} enctype="multipart/form-data") != antiCsrfInput label Please select a file: input(type="file" name="myFile") button(type="submit") Upload
MyUpload.action:
import io.netty.handler.codec.http.multipart.FileUpload val myFile = param[FileUpload]("myFile")
myFile是io.netty.handler.codec.http.multipart.FileUpload的一个实例,使用它的方法可以获取文件名、移动文件等等。
小于16KB的文件会被存在内存,大文件会被存在系统临时路径(或者是在xitrum.conf的xitrum.request.tmpUploadDir中指定的路径),当连接关闭或者响应发出后就会被自动删除。
Ajax方式上传
有很多JavaScript库支持Ajax方式上传,它们使用隐藏iframe或Flash发送multipart/form-data到服务器。
如果你不确定这些库在form中用哪些请求参数发送文件,查看 Xitrum访问日志。