在Android上使用Jackrabbit WebDAV库上传大文件
我的上传功能如下:在Android上使用Jackrabbit WebDAV库上传大文件,android,Android,我的上传功能如下: public void WebdavPutFile() { try { PutMethod Upload = new PutMethod("http://URL/FileName"); File f = new File("Path"); if(f.exists()) { RequestEntity requestEntity = new InputStreamRequestEntity(new
public void WebdavPutFile() {
try {
PutMethod Upload = new PutMethod("http://URL/FileName");
File f = new File("Path");
if(f.exists()) {
RequestEntity requestEntity = new InputStreamRequestEntity(new FileInputStream(f));
Upload.setRequestEntity(requestEntity);
client.executeMethod(Upload);
}
}
catch(Exception e) {
e.printStackTrace();
}
}
可以成功上传小文件。但如果文件大小大于16mb,则会发生outofmemory问题。
如何上传大文件 加载大文件时,堆正在爆炸。:) 根据我所读的内容,可以创建到WebDav服务器的可恢复上传。您所要做的就是使用
RandomAccessFile
读取大文件,并创建一些缓冲区,比如1MB,然后使用提供的链接中指定的头进行几次上传。如果您需要代码将文件分块,请告诉我。我从中找到了答案
使用FileRequestEntity
而不是InputStreamRequestEntity
它适用于大文件上传 问题是它正在将整个文件加载到内存中。相反,您需要使用多部分表单请求。我还没有使用过这个特定的库,但希望它能让您走上正轨。