提问者:小点点

Vertx-限制上载文件类型


我正在使用Vertx创建一个API,让用户上传图像,但我想限制某些文件类型-jpg|Jpeg|png

最好的方法是什么?

private void uploadLogoHandler(RoutingContext context) {
   //Filter content type

}

共2个答案

匿名用户

HTML:

在垂直方向。x我们需要检查上传文件的内容类型,假设我们只有一次上传:

Set<FileUpload> fileUploads = routingContext.fileUploads();
FileUpload fileUpload = fileUploads.iterator().next();
fileUpload.contentType();
if(!fileUpload.contentType().startsWith("image/")){
    routingContext.response().putHeader("content-type", "text/html").end("Please upload an image.");
}else{
    // Process your image
}

匿名用户

我不知道有什么“最好”的方法可以做到这一点。但这里有一些选择

[1] 在客户端上,在允许用户上载文件之前查看文件的扩展名(隐藏最终上载按钮,仅在用户选择具有正确扩展名的文件名后显示)。您可以在客户端javascript中执行此操作,您不能访问文件的完整路径,但可以访问文件名(减去路径)。

[2]在服务器上执行上述操作。您应该能够在多部分uplod中获取文件的名称。

[3] 在上传过程中,没有简单的方法可以检查实际的文件类型。我要做的(如果您正在检查图像)是将其写入临时文件,然后运行JavaImageIO读取图像。如果它读取时没有错误,那么它是一个图像,如果没有错误,您将得到一个异常,并删除该文件。我不知道这样做有什么安全问题。请注意,通过ImageIO读取文件是一种阻塞操作,因此请将其放在vert中。执行阻塞。