如何将图像上传到服务器

时间:2010-12-18 10:16:18

标签: android android-networking

我试图将图像上传到服务器两天但是我无法发布图像。编码编译并运行成功,但图像不会写入服务器。

这是我的编码:

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.widget.Toast;

public class sde extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        loadtoUrl("http://
");
    }

    private void loadtoUrl(String string) {

        // TODO Auto-generated method stub
         try {
             String pathToOurFile = "/sdcard/tamil.PNG";
             FileInputStream fileInputStream = new FileInputStream(new File(pathToOurFile) );
             BufferedInputStream bis = new BufferedInputStream(fileInputStream,3000);
             byte[] bt=new byte[bis.available()];
            HttpURLConnection connection = (HttpURLConnection)new URL(string).openConnection();
             connection.setDoOutput(true);
             connection.setRequestMethod("POST");
             connection.connect();
            FileOutputStream input = (FileOutputStream) connection.getOutputStream();
            input.write(bt);
        } catch (MalformedURLException e) {
            Context context = null;
            int duration = 0;
            Toast.makeText(context, "erro in writing", duration);
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}

2 个答案:

答案 0 :(得分:3)

这是一篇很好的文章http://blog.sptechnolab.com/2011/03/09/android/android-upload-image-to-server/。它包含一个上传图像并在服务器端写入的示例。它有效。

答案 1 :(得分:1)

public boolean fileUpload(Map<String , String> params, ByteArrayOutputStream file, String link) throws Throwable{


    Account user = Util.getAccount(getApplicationContext());

    try{

        HttpClient httpClient = new DefaultHttpClient();

        HttpPost postRequest = new HttpPost(link);

        MultipartEntity multipartContent = new MultipartEntity();

        if (params != null && !params.isEmpty()) {
            for (Map.Entry<String , String> entry : params.entrySet()) {
                multipartContent.addPart(entry.getKey(),new StringBody(entry.getValue(),Charset.forName(HTTP.UTF_8)));
            }
        }

        byte[] data = file.toByteArray();

        ByteArrayBody img = new ByteArrayBody(data, "capture.jpg");
        multipartContent.addPart("image",img);
        postRequest.setEntity(multipartContent);
        HttpResponse res = httpClient.execute(postRequest);
        res.getEntity().getContent().close();

        return true;

    }catch(Throwable e){
        throw e;
    }

}