【发布时间】:2011-03-26 05:20:53
【问题描述】:
我正在通过从图库中选择图像或使用 Android 相机捕获图像来将图像上传到 Web 服务器。
我需要在通知栏中显示进度。我看到 Facebook 应用程序是这样做的。有没有办法知道上传了多少?
我上传图片到服务器的代码是:
public void uploadImage() {
final Toast toast = Toast.makeText(this, "Image uploaded successfully",
Toast.LENGTH_SHORT);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Upload");
builder.setMessage("Do you want to upload the captured picture?");
builder.setIcon(R.drawable.icon);
builder.setCancelable(false);
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
testWebService(Bitmap bmp)
finish();
toast.show();
}
});
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
public void testWebService(Bitmap bmp) {
MarshalBase64 marshal = new MarshalBase64();
ByteArrayOutputStream out = new ByteArrayOutputStream();
bmp.compress(CompressFormat.PNG, 100, out);
byte[] raw = out.toByteArray();
SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,
OPERATION_NAME);
request.addProperty("image", raw);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
marshal.register(envelope);
HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);
try
{
httpTransport.call(SOAP_ACTION, envelope);
Object response = envelope.getResponse();
}
catch (Exception exception)
{
exception.printStackTrace();
}
}
有没有办法知道上传了多少?
【问题讨论】:
-
我想做同样的事情,从内置摄像头捕获图像并将其发送到服务器。请问您是如何在相机图像和上传部分之间建立联系的?您在 Web 服务器部分使用什么方法来接收图像?该方法是否有 byte[] 参数?我拥有的方法是一种没有参数的方法,它会生成一个随机数。那么如何才能在这两者之间建立联系呢?发送图片并返回一个随机数?请帮忙!!谢谢。
-
@jennifer:既然你已经解决了这个问题,我能知道你是怎么得到正在上传的字节数组的数量的吗?
-
Junaid 我在 Android 上使用了 Multipart 表单上传 17od.com/2010/02/18/multipart-form-upload-on-android
-
以下答案仅供链接,可能会被审核队列删除。 It is here 以保存它。