无法用Java上传200mb PDF文件

时间:2018-12-11 18:10:19

标签: java

我能够上传具有7MB数据的PDF文件,但我不能上传超过7MB的数据。谁能提供使用SMB协议上传200MB文件同时使用Angular代码处理200MB PDF文件的示例

服务代码:

SmbFileOutputStream sfos = new SmbFileOutputStream(efbiFile);
byte[] buf = new byte[1024 * 1024 * 200];
BufferedOutputStream bufos = new BufferedOutputStream(sfos,buf.length);
final ReadableByteChannel inputChannel = 
Channels.newChannel(fileObj.getInputStream());
final WritableByteChannel outputChannel = Channels.newChannel(bufos);                             
ChannelTools.fastChannelCopy(inputChannel,outputChannel);
inputChannel.close();
outputChannel.close();

1 个答案:

答案 0 :(得分:2)

您很可能不想分配200 MB的缓冲区(new byte[1024 * 1024 * 200])。 BufferedOutputStream的目的是提高许多小写操作的整体性能,而不是将整个输入存储在RAM中。

您可以使用InputStream.transferTo(OutputStream )方法,并以默认的BufferedOutputStream大小8196开始:

try (InputStream in = fileObj.getInputStream();
     SmbFileOutputStream sfos = new SmbFileOutputStream(efbiFile);
     BufferedOutputStream out = new BufferedOutputStream(sfos)) {
  in.transferTo(out);
  out.flush(); // In case SmbFileOutputStream doesn't implement this correctly
}