我能够上传具有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();
答案 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
}