导航:首页 > 文字图片 > android上传图片文字

android上传图片文字

发布时间:2022-08-04 20:15:30

① android 上传图片或文件都是怎么弄的

一:可以使用httppost上传文件
二:或者socket写入文件
上面两种都可以获得二进制流,然后把文件写入流,这一类网络操作最好使用异步任务模型

② android的自带的httpClient 怎么上传文件

Android上传文件到服务端可以使用HttpConnection 上传文件,也可以使用Android封装好的HttpClient类。当仅仅上传文件可以直接使用httpconnection 上传比较方便快捷。

1、使用HttpConection上传文件。将文件转换成表单数据流。主要的思路就自己构造个http协议内容,服务端解析报文获得表单数据。代码片段:

[java] view plain
HttpURLConnection con;
try {
con = (HttpURLConnection) url.openConnection();
con.setConnectTimeout(C_TimeOut);
/* 允许Input、Output,不使用Cache */
con.setDoInput(true);
con.setDoOutput(true);
con.setUseCaches(false);
/* 设置传送的method=POST */
con.setRequestMethod("POST");
/* setRequestProperty */
con.setRequestProperty("Connection", "Keep-Alive");
con.setRequestProperty("Charset", "UTF-8");
con.setRequestProperty("Content-Type","multipart/form-data;boundary=" + boundary);

/* 设置DataOutputStream */
DataOutputStream ds = new DataOutputStream(con.getOutputStream());
FileInputStream fStream = new FileInputStream(file);

/* 设置每次写入1024bytes */
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];

int length = -1;
/* 从文件读取数据至缓冲区 */
while((length = fStream.read(buffer)) != -1)
{
/* 将资料写入DataOutputStream中 */
ds.write(buffer, 0, length);
}
fStream.close();
ds.flush();
ds.close();

可以参考

①《在 Android 上通过模拟 HTTP multipart/form-data 请求协议信息实现图片上传》 (http://bertlee.iteye.com/blog/1134576)。

②《关于android Http访问,上传,用了三个方法 》

2、使用Android HttpClient类上传参数。下面我在网上搜到得代码,忘记出处了

[java] view plain
private static boolean sendPOSTRequestHttpClient(String path,
Map<String, String> params) throws Exception {
// 封装请求参数
List<NameValuePair> pair = new ArrayList<NameValuePair>();
if (params != null && !params.isEmpty()) {
for (Map.Entry<String, String> entry : params.entrySet()) {
pair.add(new BasicNameValuePair(entry.getKey(), entry
.getValue()));
}
}
// 把请求参数变成请求体部分
UrlEncodedFormEntity uee = new UrlEncodedFormEntity(pair, "utf-8");
// 使用HttpPost对象设置发送的URL路径
HttpPost post = new HttpPost(path);
// 发送请求体
post.setEntity(uee);
// 创建一个浏览器对象,以把POST对象向服务器发送,并返回响应消息
DefaultHttpClient dhc = new DefaultHttpClient();
HttpResponse response = dhc.execute(post);
if (response.getStatusLine().getStatusCode() == 200) {
Log.i("http", "httpclient");
return true;
}
return false;
}

3、使用httpClient上传文字信息和文件信息。使用httpClient上传文件非常的方便。不过需要导入apache-mime4j-0.6.jar 和httpmime-4.0.jar两个.jar包。

[java] view plain
// 封装请求参数
MultipartEntity mpEntity = new MultipartEntity();
if (params != null && !params.isEmpty()) {
for (Map.Entry<String, String> entry : params.entrySet()) {

StringBody par = new StringBody(entry.getValue());
mpEntity.addPart(entry.getKey(), par);
}
}
// 图片
if (!imagepath.equals("")) {
FileBody file = new FileBody(new File(imagepath));
mpEntity.addPart("photo", file);
}
// 使用HttpPost对象设置发送的URL路径
HttpPost post = new HttpPost(path);
// 发送请求体
post.setEntity(mpEntity);
// 创建一个浏览器对象,以把POST对象向服务器发送,并返回响应消息
DefaultHttpClient dhc = new DefaultHttpClient();
HttpResponse response = dhc.execute(post);

FileBody类可以把文件封装到表单中,实现附件的上传。

关于httpClient上传文件可以参考链接: http://www.eoeandroid.com/forum.php?mod=viewthread&tid=76721&page=1

需要用的的ja下载地址r:http://download.csdn.net/detail/china1988s/3791514

参考:

①《在 Android 上通过模拟 HTTP multipart/form-data 请求协议信息实现图片上传》 (http://bertlee.iteye.com/blog/1134576)。

②《关于android Http访问,上传,用了三个方法 》

③ Android聊天界面 传文字,传图片,传语音

语音和图片其实都是传文件。
发送方将图片和语音发送至服务器,获取到一个url,然后通过消息把url发送过去。
接收方根据得到的url显示图片或者点击时播放语音(语音可以考虑先下载至本地)

④ Android如何在Html中插入图片和文字

android在html插入图片和文字的方式如下:

  1. 叫前端工程师,设计好html界面,里面已经插入了图片和文字。

  2. 将所有的html文件和css文件放到android工程的asserts文件夹下,在代码中就可以加载文件夹下的所有html文件。

⑤ android怎样实现在图片上任意位置添加文字 要代码 急求。。

android在图片上任意位置添加文字,可以使用canvas类进行操作,实例如下:

@Override
protectedvoidonDraw(Canvascanvas)
{
super.onDraw(canvas);
canvas.drawBitmap(m_LogInBmp,null,m_LogIndst,m_txBackPaint);

floattleft=m_LogIndst.left+(m_LogIndst.right-m_LogIndst.left-FontWidth*m_TextLogIn.length())/2;
floatttop=m_LogIndst.top+(m_LogIndst.bottom-m_LogIndst.top-FontHeight)/2+FontHeight;
canvas.drawText(m_TextLogIn,tleft,ttop,mLogInPaint);
}

⑥ 怎样在android系统中上传图片,信息。以及修改信息,这些代码

我一般都是通过遍历集合的方式来上传图片。而且一般都不会去管这个上传的顺序,只需要服务端按你需要返回数据就可以了

⑦ android 客户端开发 如何同时上传多张照片

1、在微博页面点击左上角发布按钮后,点击“照相机”标识或“图片”标识;
2、选择图片进行上传,选定后点击右下角的绿色“确认”按钮
3、多图上传最多支持9张图片,如果还需添加可点击“十”字继续选择上传,如果添加完毕可点击右上角的蓝色“发布”即可。

⑧ android 中写入几个图片 点击图片后有相应的文字介绍该图片 该怎么写急急。。。。。。。

你想要什么效果呢。。。如果是随便,就弄个textview组件setText就行了。
如果想要弹出效果就用builder。具体代码如下:
Builder builder=new AlertDialog.Builder(this);
builder.setMessage("这个图片OOXXXXX");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
}
}).create().show();

把这段代码放进放图片的view的点击事件内就ok了。
点击事件不用我说了吧。。。。on什么什么的。。。自己看相应的需求选择监听事件吧。

⑨ android 实时添加图片和文字到listview,如何实现

在activity里面调用addOne就可以了。
图片和文字的显示需要自己写layiout文件R.layout.music_playlist_item

public class MusicPlayListAdapter extends BaseAdapter {

List<? extends PlayListInfo> data;

public MusicPlayListAdapter(List<? extends PlayListInfo> data) {
this.data = data;
}

public void addOne(PlayListInfo music) {
data.add(music);
notifyDataSetChanged();
}

@Override
public int getCount() {
return data.size();
}

@Override
public Object getItem(int position) {
return data.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(
R.layout.music_playlist_item, null);
}

PlayListInfo music = data.get(position);
........

return convertView;
}

}

⑩ android如何实现图片批量上传

首先,以下架构下的批量文件上传可能会失败或者不会成功:
1.android客户端+springMVC服务端:服务端采用org.springframework.web.multipart.MultipartHttpServletRequest作为批量上传接收类,这种搭配下的批量文件上传会失败,最终服务端只会接受到一个文件,即只会接受到第一个文件。可能因为MultipartHttpServletRequest对servlet原本的HttpServletRequest类进行封装,导致批量上传有问题。
2.android客户端+strutsMVC服务端:
上传成功的方案:
采用android客户端+Servlet(HttpServletRequest)进行文件上传。
Servlet端代码如下:

[java] view plainprint?
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try
{
List items = upload.parseRequest(request);
Iterator itr = items.iterator();
while (itr.hasNext())
{
FileItem item = (FileItem) itr.next();
if (item.isFormField())
{
System.out.println("表单参数名:" + item.getFieldName() + ",表单参数值:" + item.getString("UTF-8"));
}
else
{
if (item.getName() != null && !item.getName().equals(""))
{
System.out.println("上传文件的大小:" + item.getSize());
System.out.println("上传文件的类型:" + item.getContentType());
// item.getName()返回上传文件在客户端的完整路径名称
System.out.println("上传文件的名称:" + item.getName());

File tempFile = new File(item.getName());
// 上传文件的保存路径
File file = new File(sc.getRealPath("/") + savePath, tempFile.getName());
item.write(file);
request.setAttribute("upload.message", "上传文件成功!");
} else
{
request.setAttribute("upload.message", "没有选择上传文件!");
}
}
}
}
catch (FileUploadException e)
{
e.printStackTrace();
}
catch (Exception e)
{
e.printStackTrace();
request.setAttribute("upload.message", "上传文件失败!");
}
request.getRequestDispatcher("/uploadResult.jsp").forward(request, response);

android端代码如下:

[java] view plainprint?
public class SocketHttpRequester {
/**
*多文件上传
* 直接通过HTTP协议提交数据到服务器,实现如下面表单提交功能:
* <FORM METHOD=POST ACTION="http://192.168.1.101:8083/upload/servlet/UploadServlet" enctype="multipart/form-data">
<INPUT TYPE="text" NAME="name">
<INPUT TYPE="text" NAME="id">
<input type="file" name="imagefile"/>
<input type="file" name="zip"/>
</FORM>
* @param path 上传路径(注:避免使用localhost或127.0.0.1这样的路径测试,因为它会指向手机模拟器,你可以使用http://www.iteye.cn或http://192.168.1.101:8083这样的路径测试)
* @param params 请求参数 key为参数名,value为参数值
* @param file 上传文件
*/
public static boolean post(String path, Map<String, String> params, FormFile[] files) throws Exception{
final String BOUNDARY = "---------------------------7da2137580612"; //数据分隔线
final String endline = "--" + BOUNDARY + "--\r\n";//数据结束标志

int fileDataLength = 0;
for(FormFile uploadFile : files){//得到文件类型数据的总长度
StringBuilder fileExplain = new StringBuilder();
fileExplain.append("--");
fileExplain.append(BOUNDARY);
fileExplain.append("\r\n");
fileExplain.append("Content-Disposition: form-data;name=\""+ uploadFile.getParameterName()+"\";filename=\""+ uploadFile.getFilname() + "\"\r\n");
fileExplain.append("Content-Type: "+ uploadFile.getContentType()+"\r\n\r\n");
fileExplain.append("\r\n");
fileDataLength += fileExplain.length();
if(uploadFile.getInStream()!=null){
fileDataLength += uploadFile.getFile().length();
}else{
fileDataLength += uploadFile.getData().length;
}
}
StringBuilder textEntity = new StringBuilder();
for (Map.Entry<String, String> entry : params.entrySet()) {//构造文本类型参数的实体数据
textEntity.append("--");
textEntity.append(BOUNDARY);
textEntity.append("\r\n");
textEntity.append("Content-Disposition: form-data; name=\""+ entry.getKey() + "\"\r\n\r\n");
textEntity.append(entry.getValue());
textEntity.append("\r\n");
}
//计算传输给服务器的实体数据总长度
int dataLength = textEntity.toString().getBytes().length + fileDataLength + endline.getBytes().length;

URL url = new URL(path);
int port = url.getPort()==-1 ? 80 : url.getPort();
Socket socket = new Socket(InetAddress.getByName(url.getHost()), port);
OutputStream outStream = socket.getOutputStream();
//下面完成HTTP请求头的发送
String requestmethod = "POST "+ url.getPath()+" HTTP/1.1\r\n";
outStream.write(requestmethod.getBytes());
String accept = "Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*\r\n";
outStream.write(accept.getBytes());
String language = "Accept-Language: zh-CN\r\n";
outStream.write(language.getBytes());
String contenttype = "Content-Type: multipart/form-data; boundary="+ BOUNDARY+ "\r\n";
outStream.write(contenttype.getBytes());
String contentlength = "Content-Length: "+ dataLength + "\r\n";
outStream.write(contentlength.getBytes());
String alive = "Connection: Keep-Alive\r\n";
outStream.write(alive.getBytes());
String host = "Host: "+ url.getHost() +":"+ port +"\r\n";
outStream.write(host.getBytes());
//写完HTTP请求头后根据HTTP协议再写一个回车换行
outStream.write("\r\n".getBytes());
//把所有文本类型的实体数据发送出来
outStream.write(textEntity.toString().getBytes());
//把所有文件类型的实体数据发送出来
for(FormFile uploadFile : files){
StringBuilder fileEntity = new StringBuilder();
fileEntity.append("--");
fileEntity.append(BOUNDARY);
fileEntity.append("\r\n");
fileEntity.append("Content-Disposition: form-data;name=\""+ uploadFile.getParameterName()+"\";filename=\""+ uploadFile.getFilname() + "\"\r\n");
fileEntity.append("Content-Type: "+ uploadFile.getContentType()+"\r\n\r\n");
outStream.write(fileEntity.toString().getBytes());
if(uploadFile.getInStream()!=null){
byte[] buffer = new byte[1024];
int len = 0;
while((len = uploadFile.getInStream().read(buffer, 0, 1024))!=-1){
outStream.write(buffer, 0, len);
}
uploadFile.getInStream().close();
}else{
outStream.write(uploadFile.getData(), 0, uploadFile.getData().length);
}
outStream.write("\r\n".getBytes());
}
//下面发送数据结束标志,表示数据已经结束
outStream.write(endline.getBytes());

BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
if(reader.readLine().indexOf("200")==-1){//读取web服务器返回的数据,判断请求码是否为200,如果不是200,代表请求失败
return false;
}
outStream.flush();
outStream.close();
reader.close();
socket.close();
return true;
}

/**
*单文件上传
* 提交数据到服务器
* @param path 上传路径(注:避免使用localhost或127.0.0.1这样的路径测试,因为它会指向手机模拟器,你可以使用http://www.itcast.cn或http://192.168.1.10:8080这样的路径测试)
* @param params 请求参数 key为参数名,value为参数值
* @param file 上传文件
*/
public static boolean post(String path, Map<String, String> params, FormFile file) throws Exception{
return post(path, params, new FormFile[]{file});
}
}

阅读全文

与android上传图片文字相关的资料

热点内容
动漫女孩可爱清新图片 浏览:380
初一美女拜年图片 浏览:89
图片搞笑头像男生 浏览:606
画动漫的图片怎么画 浏览:756
没救了文字控图片 浏览:389
锁骨唯美意境图片女生 浏览:292
word上下端的横向图片 浏览:884
圆脸单眼皮男生图片 浏览:245
金秋美女摄影图片 浏览:924
手绘男生黑白图片 浏览:881
小客厅欧式沙发如何摆放图片 浏览:436
女孩拿风车图片动漫 浏览:70
美女穿长裙子图片 浏览:278
七座车图片价格 浏览:387
绘画图片古代美女 浏览:557
大鳄鱼图片怎么画 浏览:343
秦皇岛男孩救三个女孩图片 浏览:65
动漫版双子图片 浏览:555
可爱图片姐妹萌萌哒 浏览:196
小女孩在家里浇花的图片 浏览:402