2

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

这是我的编码:

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();
        }

    }
}
4

2 回答 2

3

这是一篇不错的文章,http://blog.sptechnolab.com/2011/03/09/android/android-upload-image-to-server/。它包含一个示例,该示例将上传图像并将其写入服务器端。有用。

于 2011-03-15T08:45:18.060 回答
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;
    }

}
于 2012-04-25T09:40:49.940 回答