如何使用android studio将图像上传到服务器?

我正在尝试从我的Altervista服务器上的目录中上传从图像视图获取的图像。 我看到了很多这样的问题,但是它们使用了HttpClient,HttpPost等,现在已弃用。 我在YouTube上看到了一个教程,并将其调整为我的应用程序,但无法正常工作。 该代码将图像上传到正确的目录中,但是如果我尝试在服务器上打开它,则会出现黑屏。 我将图像下载到我的电脑上,结果更糟。

这是我下载图片时看到的

这里的图片是空的

Php 代码:

    <?php
    $image=$_POST['image'];    
    $decodedImage=base64_decode("$image");
    file_put_contents("/membri/motivationalapp/shareImages/" . "prova" . 
    ".jpg", $decodedImage);
    echo "ok";
    ?>

该图像拍摄于imageView:

    imageView=findViewById(R.id.imageView);
    screenShot=((BitmapDrawable)imageView.getDrawable()).getBitmap();

编码图像的线程:

    new Thread(new Runnable() {
        Background background = new Background(MotAct.this);
        ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
        public void run() {
    screenShot.compress(Bitmap.CompressFormat.JPEG,100,byteArrayOutputStream);
            String encodedImage= Base64.encodeToString(byteArrayOutputStream.toByteArray(),Base64.DEFAULT);
            Log.d("debug", encodedImage);
            background.uploadShareImage(encodedImage); //call to AsyncTask
        }
    }).start();

在Asynctask类中上传图片: doInBackground方法:

    final String urlServer = "http://aaa.altervista.org/fileUp/shareImage.php";

                encodedImage=strings[1];
                try {
                    //connecting to server
                    url = new URL(urlServer);
                    httpURLConnection = (HttpURLConnection) url.openConnection();
                    httpURLConnection.setRequestMethod("POST");
                    httpURLConnection.setDoOutput(true);
                    OS = httpURLConnection.getOutputStream();
                    bufferedWriter = new BufferedWriter(new OutputStreamWriter(OS, "UTF-8"));
                    //encode data for post method
                    String dati = URLEncoder.encode("image", "UTF-8") + "=" + URLEncoder.encode(encodedImage, "UTF-8");
                    bufferedWriter.write(dati);
                    bufferedWriter.flush();
                    bufferedWriter.close();
                    OS.close();

                    //read server answer
                    InputStream inputStream = httpURLConnection.getInputStream();
                    bufferedReader= new BufferedReader(new InputStreamReader((inputStream)));
                    stringBuilder= new StringBuilder();

                    while((risposta=bufferedReader.readLine())!=null){
                        stringBuilder.append(risposta+"
");
                    }

                    bufferedReader.close();
                    inputStream.close();
                    inputStream.close();
                    httpURLConnection.disconnect();

                    risposta=stringBuilder.toString().trim();
                    if(risposta.equals("ok")) 
                        return 1;
                    else
                        return 100;

                }catch (MalformedURLException e){
                    e.printStackTrace();
                }
                catch (IOException e1){
                    e1.printStackTrace();
                }

希望大家能够帮助我,谢谢!

dongre6270
dongre6270 somega当然!我添加了图像链接
11 个月之前 回复
dongpu1881
dongpu1881 你可以上传图片,这样我就能看出它有什么问题吗?
11 个月之前 回复

1个回答

The problem was the php file:

    <?php
        $image=$_POST['image'];    
        $decodedImage=base64_decode($image); //no double quotes
        file_put_contents("/membri/motivationalapp/shareImages/" . "prova" . ".JPEG", $decodedImage); //JPEG instead of jpg
        echo "ok";
    ?>
duandui2803
duandui2803 我试过这个:我将上面的代码复制到服务器上的一个文件中并且它不起作用,我对这个答案进行了修改并开始工作......
11 个月之前 回复
doufu9145
doufu9145 你是对的...所以我真的很困惑。 在那些修改之前它没有用。
11 个月之前 回复
duanshan1977
duanshan1977 两者都不应成为问题。
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问