每个人有个待收件表,当我分发一个文件给某些人的时候,这些人的待收件表就会有数据,数据关联的对象是 要分发的文件(如ID),以及状态(表示接收人查看或接收状态)。
那么,每个接收人一进入这个系统,或者一进入这个待收件模块,系统自动搜索是否有未接收的文件(根据上面说的状态判断),如果有,则弹出提示框。接收人去接收,则根据这个文件(ID)去服务器获取这个文件的下载路径。
希望能帮到你。
给一种方式做参考,我这边类似。是将A作为客户端,上传文件到服务器B,服务器B以struts接受请求做处理。使用httpclient。
/*** 将文件上传到服务端,并接收其返回信息
* @param client DefaultHttpClient
* @param url 服务器url:如:http://localhost:8080/test/upload.action
* @param filePath 文件路径
* @param params 上传参数
* @param encode 编码集,主要用来解析返回的response中的信息
* @return 解析出的返回信息,如服务器那边的成功提示:“success”
*/
public static String sendHttpClientPostToUpload(DefaultHttpClient client, String url, String filePath,
Map<String, String> params, String encode){
MultipartEntity mpEntity = new MultipartEntity()
if (params != null && !params.isEmpty()) {
for (Map.Entry<String, String> entry : params.entrySet()) {
// 参数名
StringBody par
try {
par = new StringBody(entry.getValue().toString())
mpEntity.addPart(entry.getKey(), par)
} catch (UnsupportedEncodingException e) {
e.printStackTrace()
}
}
}
// 图片
if (!filePath.equals("")) {
FileBody file = new FileBody(new File(filePath))
mpEntity.addPart("file", file)
}
// 使用HttpPost对象设置发送的URL路径
HttpPost post = new HttpPost(url)
post.setEntity(mpEntity)
// 创建一个浏览器对象,以把POST对象向服务器发送,并返回响应消息
try {
HttpResponse response = client.execute(post)
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
// 封装了服务器端返回的数据
HttpEntity responseEntity = response.getEntity()
//*******这里是对服务器返回的session进行记录的操作,以获取sessionId
// CookieStore mCookieStore = ((DefaultHttpClient) client).getCookieStore()
// List<Cookie> cookies = mCookieStore.getCookies()
// for (int i = 0 i < cookies.size() i++) {
// // 如果cookies头和"JSESSIONID" 就记录sessionID
// if ("JSESSIONID".equals(cookies.get(i).getName())) {
// String sessionId = cookies.get(i).getValue()
// break
// }
// }
//*******完成
InputStream is = responseEntity.getContent()
return changeInputStream(responseEntity.getContent(), encode)
}
} catch (ClientProtocolException e) {
e.printStackTrace()
} catch (IOException e) {
e.printStackTrace()
}
return ""
} /**
*
* @param inputStream
* @param encode
* @return
*/
private static String changeInputStream(InputStream inputStream,
String encode) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream()
int len = 0
byte[] date = new byte[1024]
String result = ""
try {
while ((len = inputStream.read(date)) != -1) {
outputStream.write(date, 0, len)
}
result = new String(outputStream.toByteArray(), encode)
return result
} catch (IOException e) {
e.printStackTrace()
}
return null
}
需要的参数client,new 一个就可以了。
DefaultHttpClient client = new DefaultHttpClient()类似参考网上有很多,不过大都是你转载他得,他转载你的,能用的不多。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)