setchunkedstreamingmode php,android – 当使用conn.setChunkedStreamingMode(1024)时,在服务器端没有收到数据...

当我使用conn.setChunkedStreamingMode(1024)时,程序会运行并上传文件,但上传的文件在uploads文件夹中不可用(找不到).

当我删除setchunk …. line文件上传成功并保存在服务器文件夹中.

使用conn.setChunkedStreamingMode的主要目的是让我的Android应用程序上传大于16MB的大文件

有人请帮我解决这个OUTOFMEMORY错误

要么

建议从Android应用程序上传大文件的其他方法.

try {

// open a URL connection to the Servlet

FileInputStream fileInputStream = new FileInputStream(sourceFile);

URL url = new URL(upLoadServerUri);

// Open a HTTP connection to the URL

conn = (HttpURLConnection) url.openConnection();

//conn.setChunkedStreamingMode(0);

//conn.setFixedLengthStreamingMode((int)sourceFile.length());

//conn.setFixedLengthStreamingMode(maxBufferSize+headerlength);

conn.setDoInput(true); // Allow Inputs

conn.setDoOutput(true); // Allow Outputs

//conn.setRequestProperty("Content-Encoding","chunked");

conn.setUseCaches(false); // Don't use a Cached Copy

conn.setRequestProperty("Transfer-Encoding","chunked");

conn.setChunkedStreamingMode(1024);

conn.setRequestMethod("POST");

//conn.setFixedLengthStreamingMode(sourceFile.length());

//conn.setChunkedStreamingMode((int)sourceFileUri.length() /100);

//conn.setRequestProperty("Upgrade","HTTP/1.1");

conn.setRequestProperty("Connection","Keep-Alive");

conn.setRequestProperty("ENCTYPE","multipart/form-data");

conn.setRequestProperty("Content-Type","multipart/form-data;boundary=" + boundary);

conn.setRequestProperty("uploaded_file",fileName);

dos = new DataOutputStream(conn.getOutputStream());

dos.writeBytes(twoHyphens + boundary + lineEnd);

dos.writeBytes("Content-Disposition: form-data; name=\"uploaded_file\";filename=\""

+ fileName + "\"" + lineEnd);

dos.writeBytes(lineEnd);

// create a buffer of maximum size

bytesAvailable = fileInputStream.available();

bufferSize = Math.min(bytesAvailable,maxBufferSize);

//bufferSize=(int)sourceFile.length();

buffer = new byte[bufferSize];

// read file and write it into form...

bytesRead = fileInputStream.read(buffer,bufferSize);

while (bytesRead > 0) {

dos.write(buffer,bufferSize);

dialog.incrementProgressBy(1);

bytesAvailable = fileInputStream.available();

bufferSize = Math.min(bytesAvailable,maxBufferSize);

bytesRead = fileInputStream.read(buffer,bufferSize);

}

// send multipart form data necesssary after file data...

dos.writeBytes(lineEnd);

dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);

// Responses from the server (code and message)

serverResponseCode = conn.getResponseCode();

String serverResponseMessage = conn.getResponseMessage();

String a = conn.getContentEncoding();

String b = conn.getContentType();

int c = conn.getContentLength();

Log.i("uploadFile","HTTP Response is : "

+ serverResponseMessage + ": " + serverResponseCode +"a="+a+b+c);

if(serverResponseCode == 200){

runOnUiThread(new Runnable() {

public void run() {

String msg = "File Upload Completed.";

String sharemsg = "http://my url /files/";

String linkmsg = uploadFileName;

Toast.makeText(MainActivity.this,"File Upload Complete.",Toast.LENGTH_SHORT).show();

Intent i=new Intent(getApplicationContext(),ShareActivity.class);

i.putExtra("msg",msg);

i.putExtra("sharemsg",sharemsg);

i.putExtra("linkmsg",linkmsg);

startActivity(i);

}

});

}

//close the streams //

fileInputStream.close();

dos.flush();

dos.close();

} catch (MalformedURLException ex) {

dialog.dismiss();

ex.printStackTrace();

runOnUiThread(new Runnable() {

public void run() {

messageText.setText("MalformedURLException Exception : check script url.");

Toast.makeText(MainActivity.this,"MalformedURLException",Toast.LENGTH_SHORT).show();

}

});

Log.e("Upload file to server","error: " + ex.getMessage(),ex);

} catch (Exception e) {

dialog.dismiss();

e.printStackTrace();

runOnUiThread(new Runnable() {

public void run() {

messageText.setText("Opps! no internet connectivity");

Toast.makeText(MainActivity.this,"Got Exception : see logcat ",Toast.LENGTH_SHORT).show();

}

});

Log.e("Upload file to server Exception","Exception : "

+ e.getMessage(),e);

}

dialog.dismiss();

return serverResponseCode;

} // End else block

  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值