情景描述:
需要上传多个图片或文件,同时图片或文件有多个属性
解决方案:
1.首先新建一个java bean,并实现系列化
<pre name="code" class="java">
import java.io.Serializable;
public class ImgBean implements Serializable {
private String mImgName;
private String mImgPath;
public String getImgName() {
return mImgName;
}
public void setImgName(String imgName) {
mImgName = imgName;
}
public String getImgPath() {
return mImgPath;
}
public void setImgPath(String imgPath) {
mImgPath = imgPath;
}
}
2.然后写一个上传类
<pre name="code" class="java">public class UploadUtils {
public String UploadFileAndData(String actionUrl,
List<ImgBean> ImgBeanList) {
String result = null;
try {
URL uri = new URL(actionUrl);
HttpURLConnection conn = (HttpURLConnection) uri.openConnection();
conn.setReadTimeout(5 * 1000);
conn.setDoInput(true);// 允许输入
conn.setDoOutput(true);// 允许输出
conn.setUseCaches(false);
conn.setRequestMethod("POST"); // Post方式
conn.setRequestProperty("Charsert", "UTF-8");
BufferedOutputStream bos = new BufferedOutputStream(
conn.getOutputStream());//打开输出流
ObjectOutputStream oos = new ObjectOutputStream(bos);//打开对象输出流
for (StampAnnotation annot : stampAnnotationList) {
oos.writeObject(annot);//写出对象到输出流中
}
oos.flush();
oos.close();
// 得到响应码
if (conn.getResponseCode() == 200) {
InputStream in = conn.getInputStream();
InputStreamReader isReader = new InputStreamReader(in);
BufferedReader bufReader = new BufferedReader(isReader);
String line = null;
result = "";
while ((line = bufReader.readLine()) != null)
result += line;
}
bos.close();
conn.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
3.然后调用方式如下:
UploadUtils uploadUtils = new UploadUtils();
String result = uploadUtils.UploadFileAndData("127.0.0.1",
imgbeanList);
4.服务端接收:
BufferedInputStream bis=new BufferedInputStream(conn.getInputStream);
ObjectInputStream ois=new ObjectInputStream(bis);
ImgBean imgBean=(imgBean)ois.readObject();
String imgName=imgBean.getImgName();
String imgPath=imgBean.getImgPath();