本文实例为大家分享了android通过servlet服务器保存文件到手机的具体代码,供大家参考,具体内容如下
服务器端:(手机和电脑连接的同一个WIFI)
package com;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import sun.misc.base64Encoder;
public class download extends HttpServlet {
public download() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// response.setContentType("text/html");
// PrintWriter out = response.getWriter();
// out.println("");
// out.println("");
// out.println(" A Servlet ");
// out.println(" ");
// out.print(" This is ");
// out.print(this.getClass());
// out.println(", using the GET method");
// out.println(" ");
// out.println("");
// out.flush();
// out.close();
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
//request.setCharacterEncoding("utf-8");////这句至关重要,不然中文的文件名称显示乱码
PrintWriter out = response.getWriter();
// out.println("");
// out.println("");
// out.println(" A Servlet ");
// out.println(" ");
// out.print(" This is ");
// out.print(this.getClass());
// out.println(", using the POST method");
// out.println(" ");
// out.println("");
out.print(GetImageStr());///输出文件的字符串
out.flush();
out.close();
}
public void init() throws ServletException {
// Put your code here
}
public static String GetImageStr()
{//将图片文件转化为字节数组字符串,并对其进行base64编码处理
// String imgFile = "d://test.jpg";//待处理的图片
//String imgFile="F://upload//1.jpg";////可以
// String imgFile="F://upload//软工大作业.ppt";////可以
String imgFile="F://upload//爱的勇气.mp3";//不可以
// String imgFile="F://upload//upload.rar";//可以
InputStream in = null;
byte[] data = null;
//读取图片字节数组
try
{
in = new FileInputStream(imgFile);
data = new byte[in.available()];
in.read(data);
in.close();
}
catch (IOException e)
{
e.printStackTrace();
}
//对字节数组base64编码
base64Encoder encoder = new base64Encoder();
return encoder.encode(data);//返回base64编码过的字节数组字符串
} ///GetImageStr
}
手机端:
package com.example.getfile_2;
import java.io.FileOutputStream;
import java.io.OutputStream;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.util.EntityUtils;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private static final int REQUEST_TIMEOUT = 5 * 1000;// 设置请求超时10秒钟
private static final int SO_TIMEOUT = 10*60 * 1000; // 设置请求超时时间10秒钟
private static final int LOGIN_OK = 1;
private Button button1, button2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = (Button) findViewById(R.id.button1);
button2 = (Button) findViewById(R.id.button2);
button1.setonClickListener(new onClickListener() {
@Override
public void onClick(View v) {
// TODO 自动生成的方法存根
Log.i("button1", "button1");
fun_HttpPost();
}
});
}
public void fun_HttpPost() {
new Thread(new Runnable() {
@Override
public void run() {
// TODO 自动生成的方法存根
String urlStr = "http://192.168.0.102:8080/download/servlet/download";
HttpPost request = new HttpPost(urlStr);
try {
HttpClient client = getHttpClient();
// 执行请求返回相应
HttpResponse response = client.execute(request);
// 判断是否请求成功
if (response.getStatusLine().getStatusCode() == 200) {
// 获得响应信息
String responseMessage = EntityUtils.toString(response
.getEntity());
Log.i("responseMessage", responseMessage + ",长度:"
+ responseMessage.length());
GenerateImage(responseMessage);
Log.i("生成成功", "生成成功");
}
} catch (Exception e) {
e.printStackTrace();
}
}// //run()
}).start();
}// /fun_register()
//base64字符串转化成图片
public static boolean GenerateImage(String imgStr)
{ //对字节数组字符串进行base64解码并生成图片
if (imgStr == null) //图像数据为空
return false;
Decoder.base64Decoder decoder = new Decoder.base64Decoder();
try
{
//base64解码
byte[] b = decoder.decodeBuffer(imgStr);
for(int i=0;i
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。



