从android上传图片到服务端(struts2)解决办法

从android上传图片到服务端(struts2)
运行起来都没有报错。
服务器端出现了着两句代码:
五月 26, 2015 1:50:43 下午 com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
信息: Removing file headimg /Users/shaoqianting/Documents/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/work/Catalina/localhost/Upload/upload_69e0c98a_14d8eb8a784__7fff_00000014.tmp
我发现,它没有执行到UploadAction的excute方法,不知道改怎么写链接。


客户端
package com.byl.clipheadphoto;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

import com.byl.asyntask.FormFile;
import com.byl.asyntask.SocketHttpRequester;
import com.byl.clipheadphoto.clip.ClipImageLayout;
import com.byl.clipheadphoto.util.ImageTools;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Environment;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class ClipActivity extends Activity{
private ClipImageLayout mClipImageLayout;
private String path;
private ProgressDialog loadingDialog;
//从相册中获取数据
@Override
protected void onCreate(Bundle savedInstanceState){
requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_clipimage);
//这步必须要加
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
        loadingDialog=new ProgressDialog(this);
        loadingDialog.setTitle("请稍后...");
path=getIntent().getStringExtra("path");
if(TextUtils.isEmpty(path)||!(new File(path).exists())){
Toast.makeText(this, "图片加载失败",Toast.LENGTH_SHORT).show();
return;
}
Bitmap bitmap=ImageTools.convertToBitmap(path, 600,600);
if(bitmap==null){
Toast.makeText(this, "图片加载失败",Toast.LENGTH_SHORT).show();
return;
}
mClipImageLayout = (ClipImageLayout) findViewById(R.id.id_clipImageLayout);
mClipImageLayout.setBitmap(bitmap);
((Button)findViewById(R.id.id_action_clip)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
loadingDialog.show();
new Thread(new Runnable() {
@Override
public void run() {
Bitmap bitmap = mClipImageLayout.clip();
long nametime=System.currentTimeMillis();
String path= Environment.getExternalStorageDirectory()+"/ClipHeadPhoto/cache/"+nametime+ ".jpeg";
ImageTools.savePhotoToSDCard(bitmap,path);
Log.d("sqt", "path:"+path);
File headimgFile=new File(Environment.getExternalStorageDirectory(),"/ClipHeadPhoto/cache/"+nametime+ ".jpeg");  
Log.d("sqt", "headimgFile:"+headimgFile);
uploadFile(headimgFile);

loadingDialog.dismiss();
Intent intent = new Intent();
intent.putExtra("path",path);
Log.d("sqt", "path"+path);
setResult(RESULT_OK, intent);
finish();
}
}).start();
}
});
}
public String uploadFile(File imageFile) {  
 Log.i("uploadFile", "upload start");
 try {  
        // String requestUrl = "http://192.168.1.128:8080/Struts2_Upload/upload/upload.do";  
         String requestUrl = "http://192.168.0.100:8080/Upload/upload/upload.do"; 
         // 请求普通信息  
         Map<String, String> params = new HashMap<String, String>();  
         // params.put("filename", "张三");  
         params.put("name", "张三");  
         params.put("fileName", imageFile.getName());  
         // 上传文件  
         FormFile formfile = new FormFile(imageFile.getName(), imageFile,  
                 "headimg", "application/octet-stream");  
         Log.i("uploadFile", "FormFile:"+params); 
         SocketHttpRequester.post(requestUrl, params, formfile);  
           
     } catch (Exception e) {  
         Log.i("SQT", "upload error");
         e.printStackTrace();  
     }  

     Log.i("SQT", "upload end");  
     return "OK";  
 }  

}


服务端代码

package net.sqt.action;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class UploadAction extends ActionSupport{
private static final long serialVersionUID = 1L;
private File photo;// 上传文件
private String photoFileName;// 上传文件的文件名
private String photoContentType;// 上传文件的类型
private String savePath;//上传后的保存目录


public File getPhoto() {
return photo;
}

public void setPhoto(File photo) {
this.photo = photo;
}

public String getPhotoFileName() {
return photoFileName;
}

public void setPhotoFileName(String photoFileName) {
this.photoFileName = photoFileName;
}

public String getPhotoContentType() {
return photoContentType;
}

public void setPhotoContentType(String photoContentType) {
this.photoContentType = photoContentType;
}

public String getSavePath() {
return savePath;
}

public void setSavePath(String savePath) {
this.savePath = savePath;
}

public UploadAction() {
System.out.println("UploadAction构造方式被执行");
}

//执行上传功能
public String execute() {
System.out.println("执行上传execute()...");
HttpServletRequest request=ServletActionContext.getRequest();  

//1.获取上传后文件的真实目录
String path =ServletActionContext.getServletContext().getRealPath(this.getSavePath());
System.out.println(path);
//2.获得上传文件的真实路径
String f_name=path+File.separator+this.getPhotoFileName();
//File.separator+
System.out.println(f_name);

System.out.println("文件名:"+request.getParameter("fileName")); 
System.out.println("获取Android端传过来的文件信息:");  
        System.out.println("文件存放目录: "+getSavePath());  
        System.out.println("文件名称: "+photoFileName);  
        System.out.println("文件大小: "+photo.length());  
        System.out.println("文件类型: "+photoContentType);  
        
        
//3.创建输入和输出流
BufferedInputStream bis=null;
BufferedOutputStream bos=null;

try {
bis=new BufferedInputStream(new FileInputStream(photo));
bos=new BufferedOutputStream(new FileOutputStream(new File(f_name)));
byte[] buff=new byte[(int)photo.length()];
int len=0;
while ((len=bis.read(buff))!=-1) {
bos.write(buff,0,len);
}

} catch (Exception ex) {
// TODO: handle exception
ex.printStackTrace();
}
finally
{
try {
if (bis!=null) {//先close,再null
bis.close();
bis=null;
}
if (bos!=null) {
bos.close();
bos=null;
}
System.out.println("上传成功!");
} catch (Exception ex) {
// TODO: handle exception
ex.printStackTrace();
System.out.println("上传失败!");
}
}
return SUCCESS;
}
}



struts配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
    <constant name="struts.devMode" value="true"/>
    <constant name="struts.i18n.encoding" value="UTF-8"/>
    <constant name="struts.multipart.maxSize" value="5120000"/>
     <!-- 开发模式下使用,这样可以打印出更详细的错误信息 -->
    <constant name="struts.devMode" value="true"/>
<package name="upload" extends="struts-default">
        <action name="upload" method="execute" class="net.sqt.action.UploadAction">
            <param name="savePath">/headimg</param>
            <result name="success">/UploadSuccess.jsp</result>
            <result name="input">/upload.jsp</result>
            
            <!-- 拦截器堆栈的修改 -->
            <interceptor-ref name="defaultStack">
                <!-- 最大上传的字节 -->
                <param name="fileUpload.maximumSize">
                    5120000
                </param>
                <param name="fileUpload.allowedTypes">
                    image/png,
                    image/jpeg,
                    application/msword
                </param>
            </interceptor-ref>
        </action>
   
</struts>    

------解决思路----------------------
楼主在浏览器输入那个链接有用吗?