在使用HttpURLConnection.setChunkedStreamingMode()的时候,设定了块大小为:10240,也就是10K,
然而很偶然的发现,再上传大部分文件的时候正常,但是上传一个800K作用的文件时,上传之后,打开时文件时损坏的了
将块的大小改一个值,例如1024*1024,就解决了。。。表示很操蛋。。。
后来发现是处理流的地方有问题。
下面是完整的httpurlconnection的使用:
URL u = new URL(url); HttpURLConnection conn = (HttpURLConnection) u.openConnection(); conn.setDoOutput(true); conn.setDoInput(true); conn.setUseCaches(false); conn.setRequestMethod("POST"); conn.setRequestProperty("Connection", "Keep-Alive"); conn.setRequestProperty("Charsert", "UTF-8"); conn.setRequestProperty("Cookie", "JSESSIONID="+paramObj.getKey()); conn.setConnectTimeout(5000); conn.setReadTimeout(5000); //指定流的大小,当内容达到这个值的时候就把流输出 conn.setChunkedStreamingMode(20*1024); BufferedOutputStream out = new BufferedOutputStream(conn.getOutputStream(),20480);
相关推荐
`HttpURLConnection`提供了`setFixedLengthStreamingMode()`和`setChunkedStreamingMode()`方法,分别用于定长和不定长的流式上传。 在实际应用中,我们还需要考虑错误处理和重试机制,例如网络中断、超时等情况。...
9. **断点续传**:在处理大文件下载时,可能需要用到断点续传功能,这需要保存当前已下载的字节数,然后在后续请求中设置合适的`setFixedLengthStreamingMode()`或`setChunkedStreamingMode()`。 10. **HTTP缓存**...
3. **设置请求范围**:使用HttpURLConnection的`setFixedLengthStreamingMode()`或`setChunkedStreamingMode()`方法来指定下载范围。对于断点下载,我们需要设置`Range`请求头,值形如`bytes=startOffset-endOffset`...
httpURLConnection.setChunkedStreamingMode(128 * 1024); // 设置流大小 httpURLConnection.setDoInput(true); httpURLConnection.setDoOutput(true); httpURLConnection.setUseCaches(false); ...
同时,为了支持文件分块上传,我们可以设置`setChunkedStreamingMode`方法,以指定每个数据块的大小,这样可以在上传过程中实时计算已上传的百分比。 在`AsyncTask`中,我们通常会进行网络操作,因为它可以异步执行...
同时,利用`HttpURLConnection`的`setChunkedStreamingMode()`进行分块传输,减少内存占用。 最后,为了提高用户体验,应添加下拉刷新和上拉加载更多功能。这可以通过集成第三方库,如SwipeRefreshLayout和...
- 在Android客户端,可以使用`HttpURLConnection`的`setFixedLengthStreamingMode()`或`setChunkedStreamingMode()`来设置上传模式。 5. **服务器端处理**: - 服务器端通常使用Servlet来接收文件,这里使用了...
如果使用HttpURLConnection,可以在打开连接后设置`setFixedLengthStreamingMode()`或`setChunkedStreamingMode()`,然后在`setRequestProperty()`中添加认证头。 4. **处理安全性和最佳实践**: - **HTTPS优先**...
对于大文件,我们可以设置`setFixedLengthStreamingMode(long l)`或`setChunkedStreamingMode(int chunkSize)`方法,以分块传输数据,避免一次性加载所有数据导致的内存溢出。 扩展Volley以支持文件上传和进度条...