在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


它适用于大文件上传

问题是它正在将整个文件加载到内存中。相反,您需要使用多部分表单请求。我还没有使用过这个特定的库,但希望它能让您走上正轨。