【问题标题】:image uploading in grails在 grails 中上传图片
【发布时间】:2010-09-26 15:39:25
【问题描述】:

我是 grails 的新手。我正在做从客户端上传图像并将其存储在服务器中的 Web 应用程序。

我的 Gsp 代码是:

<g:uploadForm action="saveImage">
<input type="file" name="image"> 
<input type="submit" value="Submit">
</g:uploadForm>

我在控制器中的 saveImage 操作是:

def saveImage={
def file = request.getFile('image')
        if (file && !file.empty) {
            file.transferTo(new java.io.File("image.jpg"))
            flash.message = 'Image uploaded'
            redirect(action: 'uploadImage')
        }
}

在这段代码中,如果我上传一些其他文件,如文本文件,它会抛出异常。为此,我想检查文件扩展名,并且我想使用 If 循环来确保上传的文件是图像文件。但我不知道如何在 grails 中找到文件扩展名。

有没有其他方法可以在 grails 应用程序中上传图像。它必须只接受图像文件。

谁能提供帮助?

谢谢。

【问题讨论】:

    标签: java grails groovy frameworks


    【解决方案1】:

    我不知道下面的答案是找到文件扩展名的正确方法。我也是新手。但是这个答案有效

    使用file.getOriginalFilename()方法。它返回一个类似“test.jpg”的字符串。然后你使用tokenize方法将文件名拆分为“.”。然后你从拆分后的列表。这是文件的扩展名。现在你可以做剩下的过程了。

    【讨论】:

      【解决方案2】:

      从 file.getOriginalFilename() 获取文件扩展名效果很好。我认为这是更好的方法。

      【讨论】:

        【解决方案3】:
        if(params?.photo?.getContentType()=='image/jpeg' || 
           params?.photo?.getContentType()=='image/gif' ||
           params?.photo?.getContentType()=='image/png' || 
           params?.photo?.getContentType()=='image/bmp'
        )
        

        我觉得你可以试试这个

        【讨论】:

          【解决方案4】:

          file.getContentType() 有一个小问题。 Windows 和其他系统处理它的方式不同。

          例如,.csv 文件在其他系统中为 text/plain,但在 Windows 中为 application/vnd.ms-excel

          【讨论】:

            【解决方案5】:

            好吧,这真的很晚了。但我发现最好的解决方案(因为扩展并没有真正说明内容)是使用file.getContentType() ...

            例如,对于 jpeg 图像,返回值将是一个字符串 image/jpeg,您可以轻松地对其进行测试。其他文件格式(png、gif、...)也是如此。

            希望这会有所帮助。

            【讨论】:

            • 刚刚注意到@Sree 也有同样的建议……太难读了,我一开始没看到。
            【解决方案6】:

            您可以使用Files.probeContentType(filePath) 来确定文件类型

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2019-01-04
              • 1970-01-01
              • 2021-03-13
              • 2015-05-09
              • 2017-12-09
              • 2015-10-21
              相关资源
              最近更新 更多