在Grails中,将文件存储在数据库中的方法是使用BLOB(Binary Large Object)字段。以下是一个简单的步骤来实现这个功能:
FileStorage
,并添加一个byte[]
类型的属性来存储文件内容。class FileStorage {
byte[] fileContent
String fileName
String fileType
static constraints = {
fileContent nullable: true, maxSize: 100000000 // 100MB
fileName nullable: false, blank: false
fileType nullable: false, blank: false
}
}
grails-app/conf/application.yml
文件中,添加以下配置以增加最大请求大小以适应大文件。grails:
web:
mime:
types:
all: '*/*'
multipart:
maxFileSize: 100MB
maxRequestSize: 100MB
import org.springframework.web.multipart.MultipartFile
class FileStorageController {
def save() {
MultipartFile file = request.getFile('file')
if (!file.isEmpty()) {
FileStorage fileStorage = new FileStorage(
fileContent: file.bytes,
fileName: file.originalFilename,
fileType: file.contentType
)
fileStorage.save(flush: true)
redirect action: 'index'
}
}
}
<!DOCTYPE html>
<html>
<head>
<title>File Storage</title>
</head>
<body>
<h1>File Storage</h1>
<form method="post" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" value="Upload" />
</form>
</body>
</html>
UrlMappings.groovy
文件中,添加一个映射以将请求路由到FileStorageController
。class UrlMappings {
static mappings = {
"/$controller/$action?/$id?(.$format)?"{
constraints {
// apply constraints here
}
}
"/"(view:"/index")
"500"(view:'/error')
}
}
现在,您已经成功创建了一个Grails应用程序,可以将文件存储在数据库中。请注意,这种方法可能不适用于大型文件或频繁访问的文件,因为它们可能会影响数据库性能。在这种情况下,您可以考虑使用云存储服务(如腾讯云COS)来存储文件。
领取专属 10元无门槛券
手把手带您无忧上云