【问题标题】:How to get file size before writing it to server?如何在将文件写入服务器之前获取文件大小?
【发布时间】:2016-04-02 12:08:34
【问题描述】:

当尝试将InputStream 转换为字节数组以了解上传文件的大小时。我能够获得大小,但InputStream.read() 变为-1。如何在将文件写入服务器之前检查文件大小?

我当前的代码给了我 size ,但 InputStream 到达末尾。

    private static byte[] readFully(InputStream input) throws IOException
{
    byte[] buffer = new byte[8192];
    int bytesRead;
    byte []bytes=null;
    ByteArrayOutputStream output = new ByteArrayOutputStream();
    while ((bytesRead = input.read(buffer)) != -1)
    {
        System.out.println("Buffer is "+input.read(buffer));
        output.write(buffer, 0, bytesRead);
    }

    bytes=output.toByteArray();
    output.close();
    return bytes;
}

【问题讨论】:

  • 是否可以获得java.io.File 实例而不是InputStream?
  • 不。实际上我正在获取 inputStream 并且我在 Oracle 应用程序框架上使用它,其中 BlobDomain 类仅返回 inputStream。
  • BlobDomain 有一个 getLength 方法
  • 您为每个循环迭代调用了两次input.read(buffer),但只写了一次output。您在while 语句本身中调用read(),返回值在bytesRead 中。在System.out.println() 语句中再次调用read(),但丢弃结果。

标签: java file io inputstream


【解决方案1】:

如果您使用 Java 实现网络服务器,请查看以下链接:

http://www.prasannatech.net/2008/11/http-web-server-java-post-file-upload.html

您必须尝试阅读传入的信息,直到找到它的边界。

现在不能使用 read() 方法,因为 InputStream 可能还没有准备好被读取。

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多