android文件上传是否有最大大小限制

时间:2013-10-28 10:18:33

标签: java android file http upload

我正在从我的Android应用程序上传大型视频文件,显示进度条。似乎上传卡在4-5兆字节之间,然后重新启动。我可以通过CURL或浏览器上传到该服务,因此服务的限制。

是否可以在某处配置上传文件大小限制?

上传代码:

HttpClient client = new DefaultHttpClient();
HttpContext httpContext = new BasicHttpContext();
HttpPost post = new HttpPost("http://myservic/videos");
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addTextBody("title", title);
builder.addBinaryBody("file", file);
HttpEntity entity = new ProgressEntity(builder.build(), listener);
post.setEntity(entity);
try {
    HttpResponse response = client.execute(post, httpContext);
} catch (IOException e) {

} catch (JSONException e) {

ProgressEntity.java

public class ProgressEntity implements HttpEntity {

private final HttpEntity inner;
private final UploadProgressListener uploadProgressListener;

public ProgressEntity(HttpEntity entity, UploadProgressListener listener) {
    this.inner = entity;
    this.uploadProgressListener = listener;
}

@Override
public boolean isRepeatable() {
    return inner.isRepeatable();
}

@Override
public boolean isChunked() {
    return inner.isChunked();
}

@Override
public long getContentLength() {
    return inner.getContentLength();
}

@Override
public Header getContentType() {
    return inner.getContentType();
}

@Override
public Header getContentEncoding() {
    return inner.getContentEncoding();
}

@Override
public InputStream getContent() throws IOException, IllegalStateException {
    return inner.getContent();
}

@Override
public void writeTo(OutputStream outputStream) throws IOException {
    inner.writeTo(new ProgressOutputStream(outputStream, uploadProgressListener));
}

@Override
public boolean isStreaming() {
    return inner.isStreaming();
}

@Override
public void consumeContent() throws IOException {
    inner.consumeContent();
}
}

ProgressOutputStream.java:

public class ProgressOutputStream extends FilterOutputStream {
private final UploadProgressListener listener;
private int totalBytesWritten;
private int since;

public ProgressOutputStream(OutputStream outputStream, UploadProgressListener uploadProgressListener) {
    super(outputStream);
    listener = uploadProgressListener;
    totalBytesWritten = 0;
    since = 0;
}

@Override
public void write(int oneByte) throws IOException {
    super.write(oneByte);
    appendWritten(1);
}

private void appendWritten(int i) throws IOException {
    totalBytesWritten += i;
    if (totalBytesWritten - since > 1024 * 1024) {
        listener.outputWritten(totalBytesWritten);
        since = totalBytesWritten;
    }
}

@Override
public void write(byte[] buffer) throws IOException {
    super.write(buffer);
    appendWritten(buffer.length);
}

@Override
public void write(byte[] buffer, int offset, int length) throws IOException {
    super.write(buffer, offset, length);
    appendWritten(length);
}
}

0 个答案:

没有答案
相关问题