当前位置: 首页 > 面试题库 >

使用Jersey上载文件时设置文件大小限制

黄兴业
2023-03-14
问题内容

我目前正在实现使用jersey rest上传文件的功能。我想设置一个允许的最大文件大小,这对我来说似乎是很常见的要求。

我的第一种方法是使用Jerseys
FormDataContentDisposition,它应该包含我可能需要的有关文件的所有信息。但是似乎缺少所有信息,除了文件名,包括文件大小。

这是我的休息方法:

@POST
@Path("uploadFile/")
@Consumes("multipart/form-data")
@Produces("text/html")
public String handleDocumentUpload(
    @FormDataParam("file") InputStream uploadedInputStream,
    @FormDataParam("file") FormDataContentDisposition fileDetail)
{
    if(fileDetail.getSize() > MAX_FILE_SIZE)
    {
        throw new IllegalArgumentException(
                "File is to big! Max size is " + MAX_FILE_SIZE);
    }
    // ...more file handling logic
}

由于返回的大小始终为“ -1”,因此不起作用!

我使用一个非常简单的html表单上传文件:

<html>
  <head>
    <title>File upload</title>
  </head>
  <body>
 <p>Choose file</p>
 <form enctype="multipart/form-data" method="POST" action="uploadFile">
   <input type="file" name="file" size="50">
   <input type="submit" value="Upload">
 </form>
  </body>
</html>

所以现在我的问题;您将如何使用Jersey实施文件大小限制?必须有一些简单的方法,而不必求助于将整个文件读入内存(ByteArray),然后获取实际大小,对吗?


问题答案:

如果客户端未发送文件大小,请退回以从流读取文件。达到大小限制后,请停止阅读并拒绝文件。无论如何,您都应该这样做,因为您不信任客户端(任何人都可以创建将HTTP请求发送到您的服务的应用,而这些请求可能没有您期望的正确数据-
因此必须考虑在内)。

另外,也可以向Web表单添加一些验证以快速失败,但是我不是JavaScript专家,所以不确定是否可以/如何做到。



 类似资料:
  • 问题内容: 我正在用multer创建一个简单的文件上传系统: 一切正常,文件被上传。唯一不起作用的是最大大小的限制。我这样做是为了检查文件onfileupload start的大小,如果文件过大,它将返回false。但是文件仍然只是上传。 似乎根本没有做任何事情。我尝试了一些东西,但是什么也没有。 我究竟做错了什么?使用multer上载时如何限制文件大小? 问题答案: 新的API 没有。如果要限制

  • 我在做什么,发生了什么? 我正在尝试上载grails中的文件,并将其删除。完成后,我仍然面临一个问题,即文件大小太大。例外情况如下: 我尝试和结果: 我发现这个问题之前问过,答案是放一些配置变量: 但仍然会出现同样的错误。我还尝试添加一些依赖项,如这里所述。或者关闭IDE并重建。什么都解决不了。 有人面对这个问题并能解决它吗?

  • 我没有任何方法在接口中获取文件大小。那么,有什么方法可以限制webflux中上传文件的最大大小,而不是复制它呢?我知道有像这样的标题,但是看起来并不安全。

  • 我正在使用AngularFire2成功将图像上传到Firebase Storage。 我有以下上传代码。 我想解决几个问题。 如何设置文件大小限制?这意味着我希望用户能够上传小于10mb的文件。 如何限制文件编号?这意味着我希望一个用户只能上传3个文件。 如果没有firebase服务器规模的解决方案,请推荐一些客户端规模的解决方案。 谢谢

  • 我想用我的. htaccess将upload_max_filesize设置为3G(或最大值),因为我无法访问php.ini.我做了很多研究,这就是我现在得到的: .htaccess: 但不知怎么的,这对我不起作用。当我加上 对于我的PHP脚本,我只得到这样的响应: 当我使用而不是时,我得到一个500内部服务器错误 那么我做错了什么<提前谢谢! 编辑/解决方案:我使用的是一个共享托管服务,它不允许我

  • 问题 如何限定上传文件的大小? Solution web.py 使用cgi 模块来解析用户的输入, 而 cgi 模块对最大输入大小有限制。 下面的代码限制了最大数据输入为 10MB. import cgi # Maximum input we will accept when REQUEST_METHOD is POST # 0 ==> unlimited input cgi.maxlen =