public class MainActivity extends Activity
{
private TextView uploadInfo
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
uploadInfo = (TextView) findViewById(R.id.upload_info)
uploadFile()
}
public void uploadFile()
{
//服务器端地址
String url = "http://192.168.0.108:8080/UploadFileServer/upload"
//手机端要上传的文件,首先要保存你手机上存在该文件
String filePath = Environment.getExternalStorageDirectory()
+ "/1/power.apk"
AsyncHttpClient httpClient = new AsyncHttpClient()
RequestParams param = new RequestParams()
try
{
param.put("file", new File(filePath))
param.put("content", "liucanwen")
httpClient.post(url, param, new AsyncHttpResponseHandler()
{
@Override
public void onStart()
{
super.onStart()
uploadInfo.setText("正在上传...")
}
@Override
public void onSuccess(String arg0)
{
super.onSuccess(arg0)
Log.i("ck", "success>" + arg0)
if(arg0.equals("success"))
{
Toast.makeText(MainActivity.this, "上传成功!", 1000).show()
}
uploadInfo.setText(arg0)
}
@Override
public void onFailure(Throwable arg0, String arg1)
{
super.onFailure(arg0, arg1)
uploadInfo.setText("上传失败!")
}
})
} catch (FileNotFoundException e)
{
e.printStackTrace()
Toast.makeText(MainActivity.this, "上传文件不存在!", 1000).show()
}
}
}
服务器端代码:
public class UploadFileServlet extends HttpServlet
{
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/html")
PrintWriter out = response.getWriter()
// 创建文件项目工厂对象
DiskFileItemFactory factory = new DiskFileItemFactory()
// 设置文件上传路径
String upload = this.getServletContext().getRealPath("/upload/")
// 获取系统默认的临时文件保存路径,该路径为Tomcat根目录下的temp文件夹
String temp = System.getProperty("java.io.tmpdir")
// 设置缓冲区大小为 5M
factory.setSizeThreshold(1024 * 1024 * 5)
// 设置临时文件夹为temp
factory.setRepository(new File(temp))
// 用工厂实例化上传组件,ServletFileUpload 用来解析文件上传请求
ServletFileUpload servletFileUpload = new ServletFileUpload(factory)
// 解析结果放在List中
try
{
List<FileItem>list = servletFileUpload.parseRequest(request)
for (FileItem item : list)
{
String name = item.getFieldName()
InputStream is = item.getInputStream()
if (name.contains("content"))
{
System.out.println(inputStream2String(is))
} else if(name.contains("file"))
{
try
{
inputStream2File(is, upload + "\\" + item.getName())
} catch (Exception e)
{
e.printStackTrace()
}
}
}
out.write("success")
} catch (FileUploadException e)
{
e.printStackTrace()
out.write("failure")
}
out.flush()
out.close()
}
// 流转化成字符串
public static String inputStream2String(InputStream is) throws IOException
{
ByteArrayOutputStream baos = new ByteArrayOutputStream()
int i = -1
while ((i = is.read()) != -1)
{
baos.write(i)
}
return baos.toString()
}
// 流转化成文件
public static void inputStream2File(InputStream is, String savePath)
throws Exception
{
System.out.println("文件保存路径为:" + savePath)
File file = new File(savePath)
InputStream inputSteam = is
BufferedInputStream fis = new BufferedInputStream(inputSteam)
FileOutputStream fos = new FileOutputStream(file)
int f
while ((f = fis.read()) != -1)
{
fos.write(f)
}
fos.flush()
fos.close()
fis.close()
inputSteam.close()
}
}
1.通知客户端传递utf-8编码。2.服务器Response时设置Encoding编码格式(res.setContentType("application/jsoncharset=utf-8"))欢迎分享,转载请注明来源:夏雨云
评论列表(0条)