gpt4 book ai didi

java - Axis2 文件分块上传

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:18:07 24 4
gpt4 key购买 nike

我正在尝试使用 Axis2 Web 服务按 1024 block 大小上传文件。

我的服务器端是这样的:

public void appendChunk(int count, byte[] buffer){
FileOutputStream fos = null;
try {
File destinationFile = new File("c:\\file1.exe");
fos = new FileOutputStream(destinationFile,true);
fos.write(buffer,0, count);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
finally{
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

我的客户端是这样的:

static int CHUNK_SIZE =1024;
public static void main(String[] args) throws IOException, ServiceException {
FileUploadService strub = new FileUploadServiceLocator();
FileUploadServicePortType a = strub.getFileUploadServiceHttpSoap12Endpoint();
byte[] buffer = new byte[CHUNK_SIZE];
FileInputStream fis = null;
File file = new File("C:\\install.exe");
int count;
try {
fis = new FileInputStream(file);
while((count = fis.read(buffer, 0, CHUNK_SIZE)) >0 )
{
a.appendChunk(count, buffer);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
finally{
fis.close();
}
}

之后文件大小不正确,如果原始文件大小为 500 Kb,则原始大小在 200 到 400k 之间变化。

我做错了什么?

更新:我查看了 Tomcat 中的 log4j 文件

Nov 17, 2010 2:08:31 PM org.apache.tomcat.util.net.JIoEndpoint createWorkerThread
INFO: Maximum number of threads (200) created for connector with address null and port 80

看起来所有对 Web 服务器的请求都是异步完成的,而且我还收到 IO 异常,该文件被另一个进程使用。

最佳答案

尝试在服务器实现中的 fos.close(); 之前添加 fos.flush();

改变

while((count = fis.read(buffer, 0, CHUNK_SIZE)) >0 )

对于

while((count = fis.read(buffer, 0, CHUNK_SIZE)) != -1 )

关于java - Axis2 文件分块上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4204112/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com