grails - 如何从.gsp文件的形式上传照片,将其保存到某个文件夹并将其链接保存到数据库?

标签 grails file-upload gsp

到目前为止,我已经尝试使用:
在 Controller 处:

if(employeeInstance.save (flush:true)) {
    def profilePicture = request.getFile('profilePicture')
        if (!profilePicture.isEmpty()) {
            userInstance.avatar = fileUploadService.uploadFile(profilePicture, "${userInstance.id}.png", "profilePicture")
        }
    }

在此代码中,我在request.getFile('profilePicture')时出错,因为我在请求时执行“ctrl + space”时,我的IDE没有给出getFile('')的任何选项。
在.gsp文件中:
<form action="save">
    <input type='file' name='profilePicture'/>
    <input type='submit'/>
</form>

服务中:
import org.springframework.web.multipart.MultipartFile
import org.codehaus.groovy.grails.web.context.ServletContextHolder

class FileUploadService {
    boolean transactional = true

        def String uploadFile(MultipartFile file, String name, String destinationDirectory) {

            def servletContext = ServletContextHolder.servletContext
            def storagePath = servletContext.getRealPath(destinationDirectory)

            // Create storage path directory if it does not exist
            def storagePathDirectory = new File(storagePath)
            if (!storagePathDirectory.exists()) {
                print "CREATING DIRECTORY ${storagePath}: "
                if (storagePathDirectory.mkdirs()) {
                    println "SUCCESS"
                } else {
                    println "FAILED"
                }
            }

            // Store file
            if (!file.isEmpty()) {
                file.transferTo(new File("${storagePath}/${name}"))
                println "Saved file: ${storagePath}/${name}"
                return "${storagePath}/${name}"

            } else {
                println "File ${file.inspect()} was empty!"
                return null
            }
        }
}

所以我被困在这里任何帮助上传图像到某个驱动器,然后将该图像的链接保存在mysql数据库中?

最佳答案

首次使用g:uploadForm不能使用表格,或在表格中添加

`enctype='multipart/form-data'`

您可以找到的项目的基本目录
System.properties['base.dir']

希望它能对您有所帮助。

关于grails - 如何从.gsp文件的形式上传照片,将其保存到某个文件夹并将其链接保存到数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28252207/

相关文章:

JavaScript HTML5 : issue with drag-and-drop for a gmail-like upload interface

ios - 有没有办法通过 Alamofire 上传 doc、pdf 文件?

grails - 为什么 .collect() 在以下 GString 中不起作用?

grails - 我可以将占位符文本添加到 Groovy 文本字段中吗(g :textField)?

image - Grails:从应用程序外部提供静态内容

grails - 使用 grails 更改 Spring 安全插件中的登录页面

Grails 2.5.3 使用 spock 在集成测试中测试服务回滚

mongodb - 如何为 MongoDB 外部化 DataSource.groovy?

php - 验证 CSV 文件是否真的是 CSV 文件

grails - 将所选行从GSP的表传递到Grails 3.0中的Controller