-1

I want to upload Image to Perticular Url(www.myUrl.com/myFolderName/) through android and retrieve the address of that url.

Here is my code

class SaveFile extends AsyncTask<String,String,String>
{
    FileInputStream fileInputStream;
    HttpURLConnection connection;
    URL url;
    DataOutputStream outputStream;
    int bytesRead,bytesAvailable,bufferSize;
    byte[] buffer;
    int maxBufferSize = 1 * 1024 * 1024;
    File selectedFile = new File(selectedImagePath);
    //selectedImagePath = path of Image in phonememory
    @Override
    protected String doInBackground(String... params)
    {
        Log.v(TAG,"Image path is  " + selectedImagePath);

        try
        {
            fileInputStream = new FileInputStream(selectedFile);
            url = new URL(SEND_IMAGE);
            connection= (HttpURLConnection)url.openConnection();
            Log.v(TAG,"connection established");
            connection.setDoOutput(true);
            connection.setDoInput(true);
            connection.setRequestMethod("POST");
            connection.setRequestProperty("Connection","Keep-Alive");
            connection.setRequestProperty("ENCTYPE","multipart/form-data");
            connection.setRequestProperty("Content-Type","multipart/form-data;boundary=*****");
            //connection.setRequestProperty("image1",selectedImagePath);
            //connection.setRequestProperty("user_id","1");
            outputStream = new DataOutputStream(connection.getOutputStream());

            outputStream.writeBytes("--*****\r\n");
            outputStream.writeBytes("Content-Disposition:form-data;name=\"uploaded_file\";filename=\""+selectedImagePath+"\""+"\r\n");
            outputStream.writeBytes("\r\n");
            //outputStream.writeBytes("--*****\r\n");
            bytesAvailable = fileInputStream.available();
            bufferSize =  Math.min(bytesAvailable,maxBufferSize);
            buffer = new byte[bufferSize];

            bytesRead = fileInputStream.read(buffer,0,bufferSize);
            while (bytesRead>0)
            {
                outputStream.write(buffer,0,bufferSize);
                bytesAvailable = fileInputStream.available();
                bufferSize = Math.min(bytesAvailable,maxBufferSize);
                bytesRead = fileInputStream.read(buffer,0,bufferSize);
            }
            outputStream.writeBytes("\r\n");
            outputStream.writeBytes("--*****--\r\n");

            int  serverResponseCode = connection.getResponseCode();
            String serverResponseMessage = connection.getResponseMessage();

            if(serverResponseCode  == HttpURLConnection.HTTP_OK) {
                String line;
                StringBuilder sb = new StringBuilder();
                BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                while ((line = reader.readLine()) != null) {
                    sb.append(line);
                }
                Log.v(TAG,"Response is " +sb.toString());

            }
            Log.v("UploadImage", "Server Response is: " + serverResponseMessage + ": " + serverResponseCode);
            fileInputStream.close();
            outputStream.flush();
            outputStream.close();
        }
        catch (Exception e)
        {
            Log.v("UploadImage"," " + e.toString());
        }
        return null;
    }


    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);


    }
}

but I am getting serverResponse 404

I tried solutions like Uploading Image to Server - Android but not worked.

I searched a lot.but couldnt find solution

Please Help!!

Pranita
  • 803
  • 7
  • 16

1 Answers1

0

I want to say that this maybe a server error. 404 in most cases is an error that says, "you have used wrong url". Check whether this url is correct.try to upload your data in your browser.

Vyacheslav
  • 26,359
  • 19
  • 112
  • 194