如何在android中从gallery上传多张图片?
我想上传多个图片从画廊到服务器,但只得到一个图像,而不是多个 下面是它的代码 FirstFragment.java如何在android中从gallery上传多张图片?,android,android-volley,retrofit2,Android,Android Volley,Retrofit2,我想上传多个图片从画廊到服务器,但只得到一个图像,而不是多个 下面是它的代码 FirstFragment.java private void orderRequest() { final OrderRequestModel model = basicInfiFragment.getData(); model.setSs(steelFragment.getProductInfo()); model.setAluminium(aluminiumFragment.getPro
private void orderRequest() {
final OrderRequestModel model = basicInfiFragment.getData();
model.setSs(steelFragment.getProductInfo());
model.setAluminium(aluminiumFragment.getProductInfo());
SimpleMultiPartRequest orderRequest = new SimpleMultiPartRequest(Request.Method.POST,
Constance.baseURL + Constance.orderURL, new com.android.volley.Response.Listener<String>() {
@Override
public void onResponse(String response) {
DialogUtil.hideProgrss();
ProductModel mResponse = new Gson().fromJson(response, ProductModel.class);
if (mResponse.getStatus().equalsIgnoreCase(Constance.success)) {
Toast.makeText(getContext(), mResponse.getMessage(), Toast.LENGTH_SHORT).show();
Intent intent = new Intent(getContext(), MainActivity.class);
getContext().startActivity(intent);
getActivity().finish();
} else {
SnackUtil.mackText(mBinding.layoutRoot, mResponse.getMessage(), true);
}
L.e(response);
}
}, new com.android.volley.Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
L.e(error.toString());
DialogUtil.hideProgrss();
DialogUtil.someThingWentWrong(getContext());
}
});
Map<String, String> headerMap = new HashMap<>();
headerMap.put("token", SP.getString(SP.TOKEN));
for (ImageDetails imageDetails : model.getImageList()) {
orderRequest.addStringParam("json", new Gson().toJson(model));
orderRequest.addFile("siteImages",imageDetails.getPath());
orderRequest.addMultipartParam(imageDetails.getName(), getActivity().
getContentResolver().getType(imageDetails.getURI()), imageDetails.getPath());
orderRequest.setHeaders(headerMap);
}
DialogUtil.showProgress(getContext());
RequestQueue requestQueue = Volley.newRequestQueue(getContext());
requestQueue.add(orderRequest);
}
public OrderRequestModel getData() {
OrderRequestModel model = new OrderRequestModel();
try {
model.setImageList(imageDetails);
} catch (Exception e) {
SnackUtil.mackText(mBinding.layoutRoot, getString(R.string.some_things_went_wrong), true);
L.e("date parse Error : " + e.getMessage());
}
return model;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 122:
if (data != null) {
if (resultCode == Activity.RESULT_OK) {
Bitmap image = (Bitmap) data.getExtras().get("data");
String strData = String.valueOf(data.getData());
L.e("Camera : " + strData);
if (image != null) {
ImageDetails imgDetails = new ImageDetails();
imgDetails.setName(MyUtil.getFilename(Uri.parse(strData), getActivity()));
imgDetails.setBitmap(image);
imgDetails.setName("image" + new Random().nextInt(1000));
imageDetails.add(imgDetails);
}
}
adapterImages.notifyDataSetChanged();
}
break;
case 144:
if (data != null) {
if (resultCode == Activity.RESULT_OK) {
String strData = data.getDataString();
Uri[] resultFileChooser = null;
try {
if (data.getClipData() == null) {
L.e("data Clicp is Null");
}
resultFileChooser = new Uri[data.getClipData().getItemCount()];
for (int i = 0; i < data.getClipData().getItemCount(); i++) {
ImageDetails details = new ImageDetails();
details.setPath(getPath(data.getClipData().getItemAt(i).getUri()));
details.setURI(data.getClipData().getItemAt(i).getUri());
details.setName(MyUtil.getFilename(data.getClipData().getItemAt(i).getUri(), getActivity()));
imageDetails.add(details);
L.e("Uri : " + details.getPath());
}
} catch (NullPointerException e) {
if (strData != null) {
resultFileChooser = new Uri[]{Uri.parse(strData)};
ImageDetails imgDetails = new ImageDetails();
imgDetails.setName(MyUtil.getFilename(Uri.parse(strData), getActivity()));
imgDetails.setPath(getPath(Uri.parse(strData)));
imgDetails.setURI(Uri.parse(strData));
imageDetails.add(imgDetails);
L.e("Uri : " + imgDetails.getPath());
}
}
}
adapterImages.notifyDataSetChanged();
}
break;
}
}
private void orderRequest(){
最终的OrderRequestModel模型=basicInfiFragment.getData();
model.setSs(steelFragment.getProductInfo());
model.setaluminal(aluminiumFragment.getProductInfo());
SimpleMultiPartRequest orderRequest=新SimpleMultiPartRequest(Request.Method.POST,
Constance.baseURL+Constance.orderURL,new com.android.volley.Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
DialogUtil.hideprogress();
ProductModel mResponse=new Gson().fromJson(响应,ProductModel.class);
if(mResponse.getStatus().equalsIgnoreCase(Constance.success)){
Toast.makeText(getContext(),mResponse.getMessage(),Toast.LENGTH_SHORT).show();
Intent Intent=新的Intent(getContext(),MainActivity.class);
getContext().startActivity(意图);
getActivity().finish();
}否则{
SnackUtil.mackText(mBinding.layoutRoot,mResponse.getMessage(),true);
}
L.e(答复);
}
},new com.android.volley.Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
L.e(error.toString());
DialogUtil.hideprogress();
DialogUtil.somethingWentRong(getContext());
}
});
Map headerMap=newhashmap();
headerMap.put(“令牌”,SP.getString(SP.token));
对于(ImageDetails ImageDetails:model.getImageList()){
orderRequest.addStringParam(“json”,new Gson().toJson(model));
orderRequest.addFile(“siteImages”,imageDetails.getPath());
orderRequest.addMultipartParam(imageDetails.getName(),getActivity()。
getContentResolver().getType(imageDetails.getURI()),imageDetails.getPath();
orderRequest.setHeaders(headerMap);
}
DialogUtil.showProgress(getContext());
RequestQueue RequestQueue=Volley.newRequestQueue(getContext());
添加(orderRequest);
}
我尝试了很多,但它只上传了一张图片,请帮助我摆脱过去三天以来的困境
SecondFragment.java
private void orderRequest() {
final OrderRequestModel model = basicInfiFragment.getData();
model.setSs(steelFragment.getProductInfo());
model.setAluminium(aluminiumFragment.getProductInfo());
SimpleMultiPartRequest orderRequest = new SimpleMultiPartRequest(Request.Method.POST,
Constance.baseURL + Constance.orderURL, new com.android.volley.Response.Listener<String>() {
@Override
public void onResponse(String response) {
DialogUtil.hideProgrss();
ProductModel mResponse = new Gson().fromJson(response, ProductModel.class);
if (mResponse.getStatus().equalsIgnoreCase(Constance.success)) {
Toast.makeText(getContext(), mResponse.getMessage(), Toast.LENGTH_SHORT).show();
Intent intent = new Intent(getContext(), MainActivity.class);
getContext().startActivity(intent);
getActivity().finish();
} else {
SnackUtil.mackText(mBinding.layoutRoot, mResponse.getMessage(), true);
}
L.e(response);
}
}, new com.android.volley.Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
L.e(error.toString());
DialogUtil.hideProgrss();
DialogUtil.someThingWentWrong(getContext());
}
});
Map<String, String> headerMap = new HashMap<>();
headerMap.put("token", SP.getString(SP.TOKEN));
for (ImageDetails imageDetails : model.getImageList()) {
orderRequest.addStringParam("json", new Gson().toJson(model));
orderRequest.addFile("siteImages",imageDetails.getPath());
orderRequest.addMultipartParam(imageDetails.getName(), getActivity().
getContentResolver().getType(imageDetails.getURI()), imageDetails.getPath());
orderRequest.setHeaders(headerMap);
}
DialogUtil.showProgress(getContext());
RequestQueue requestQueue = Volley.newRequestQueue(getContext());
requestQueue.add(orderRequest);
}
public OrderRequestModel getData() {
OrderRequestModel model = new OrderRequestModel();
try {
model.setImageList(imageDetails);
} catch (Exception e) {
SnackUtil.mackText(mBinding.layoutRoot, getString(R.string.some_things_went_wrong), true);
L.e("date parse Error : " + e.getMessage());
}
return model;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 122:
if (data != null) {
if (resultCode == Activity.RESULT_OK) {
Bitmap image = (Bitmap) data.getExtras().get("data");
String strData = String.valueOf(data.getData());
L.e("Camera : " + strData);
if (image != null) {
ImageDetails imgDetails = new ImageDetails();
imgDetails.setName(MyUtil.getFilename(Uri.parse(strData), getActivity()));
imgDetails.setBitmap(image);
imgDetails.setName("image" + new Random().nextInt(1000));
imageDetails.add(imgDetails);
}
}
adapterImages.notifyDataSetChanged();
}
break;
case 144:
if (data != null) {
if (resultCode == Activity.RESULT_OK) {
String strData = data.getDataString();
Uri[] resultFileChooser = null;
try {
if (data.getClipData() == null) {
L.e("data Clicp is Null");
}
resultFileChooser = new Uri[data.getClipData().getItemCount()];
for (int i = 0; i < data.getClipData().getItemCount(); i++) {
ImageDetails details = new ImageDetails();
details.setPath(getPath(data.getClipData().getItemAt(i).getUri()));
details.setURI(data.getClipData().getItemAt(i).getUri());
details.setName(MyUtil.getFilename(data.getClipData().getItemAt(i).getUri(), getActivity()));
imageDetails.add(details);
L.e("Uri : " + details.getPath());
}
} catch (NullPointerException e) {
if (strData != null) {
resultFileChooser = new Uri[]{Uri.parse(strData)};
ImageDetails imgDetails = new ImageDetails();
imgDetails.setName(MyUtil.getFilename(Uri.parse(strData), getActivity()));
imgDetails.setPath(getPath(Uri.parse(strData)));
imgDetails.setURI(Uri.parse(strData));
imageDetails.add(imgDetails);
L.e("Uri : " + imgDetails.getPath());
}
}
}
adapterImages.notifyDataSetChanged();
}
break;
}
}
public OrderRequestModel getData(){
OrderRequestModel模型=新的OrderRequestModel();
试一试{
model.setImageList(imageDetails);
}捕获(例外e){
SnackUtil.mackText(mBinding.layoutRoot,getString(R.string.something\u-things\u-gow\u-error),true);
L.e(“日期分析错误:+e.getMessage());
}
收益模型;
}
@凌驾
ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
开关(请求代码){
案例122:
如果(数据!=null){
if(resultCode==Activity.RESULT\u确定){
位图图像=(位图)数据.getExtras().get(“数据”);
String strData=String.valueOf(data.getData());
L.e(“摄像机:”+strData);
如果(图像!=null){
ImageDetails imgDetails=新的ImageDetails();
setName(MyUtil.getFilename(Uri.parse(strData),getActivity());
imgDetails.setBitmap(图像);
setName(“image”+new Random().nextInt(1000));
imageDetails.add(imgDetails);
}
}
AdapterImage.notifyDataSetChanged();
}
打破
案例144:
如果(数据!=null){
if(resultCode==Activity.RESULT\u确定){
字符串strData=data.getDataString();
Uri[]resultFileChooser=null;
试一试{
if(data.getClipData()==null){
L.e(“数据Clicp为空”);
}
resultFileChooser=newURI[data.getClipData().getItemCount()];
对于(int i=0;i这是我正在尝试的代码。我还粘贴了我的onActivity代码和multipart代码。您可能希望在选择时启用multi-selection,然后与服务器同步
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
intent.setType("image/*");
startActivityForResult(intent, READ_REQUEST_CODE);
您将在onActivity中收到多个Uri,用于获取文件对象,然后与s同步