mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-12 16:35:52 +01:00
45 lines
1.2 KiB
Scala
45 lines
1.2 KiB
Scala
package app
|
|
|
|
import util.{Keys, FileUtil}
|
|
import util.ControlUtil._
|
|
import util.Directory._
|
|
import org.scalatra._
|
|
import org.scalatra.servlet.{MultipartConfig, FileUploadSupport, FileItem}
|
|
import org.apache.commons.io.FileUtils
|
|
|
|
/**
|
|
* Provides Ajax based file upload functionality.
|
|
*
|
|
* This servlet saves uploaded file.
|
|
*/
|
|
class FileUploadController extends ScalatraServlet with FileUploadSupport {
|
|
|
|
configureMultipartHandling(MultipartConfig(maxFileSize = Some(3 * 1024 * 1024)))
|
|
|
|
post("/image"){
|
|
execute { (file, fileId) =>
|
|
FileUtils.writeByteArrayToFile(new java.io.File(getTemporaryDir(session.getId), fileId), file.get)
|
|
session += Keys.Session.Upload(fileId) -> file.name
|
|
}
|
|
}
|
|
|
|
post("/image/:owner/:repository"){
|
|
execute { (file, fileId) =>
|
|
FileUtils.writeByteArrayToFile(new java.io.File(
|
|
getAttachedDir(params("owner"), params("repository")),
|
|
fileId + "." + FileUtil.getExtension(file.getName)), file.get)
|
|
}
|
|
}
|
|
|
|
private def execute(f: (FileItem, String) => Unit) = fileParams.get("file") match {
|
|
case Some(file) if(FileUtil.isImage(file.name)) =>
|
|
defining(FileUtil.generateFileId){ fileId =>
|
|
f(file, fileId)
|
|
|
|
Ok(fileId)
|
|
}
|
|
case _ => BadRequest
|
|
}
|
|
|
|
}
|