http://dev.classmethod.jp/server-side/ruby-on-rails/ruby-on-rails_image_controller/

http://qiita.com/shunjiro/items/92046bae8651ae8e2850

上記2つのページを参考に、android端末から画像をアップロードし、PC内に保存することを考えています。
1つ目のページにあるように、imgのパラメータとしてandroid側から画像をアップロードするにはどうすれば良いでしょうか?

railsのコード

 def upload
    file = params[:img]


    File.open("public/img/kuro.png, 'wb') { |f|
      f.write(file.read)
    }

    render nothing: true, status: 200
  end

railsのコントローラで以上のようなアクションを作成し、androidからこのアクションをPOSTで呼び出し画像をアップロードしたいと考えています。

androidのコード

   public static String sendPostRequest1(byte[] data) throws IOException {
        // 接続先URL
        String lineEnd = "\r\n";
        String twoHyphens = "--";
        String boundary =  "*****";
        HttpURLConnection con = null;
        URL url = new URL("http // 接続先URL/application/upload");
        con = (HttpURLConnection)url.openConnection();
        con.setRequestMethod("POST");
        // リダイレクトを自動で許可しない設定
        con.setInstanceFollowRedirects(false);
        // URL接続からデータを読み取る場合はtrue
        con.setDoInput(true);
        // URL接続にデータを書き込む場合はtrue
        con.setDoOutput(true);
        con.setRequestProperty("Connection", "Keep-Alive");
        con.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary);
        con.setRequestProperty("Accept-Charset", "UTF-8");
        con.setUseCaches(false);



       DataOutputStream wr = new DataOutputStream(
                con.getOutputStream());
        wr.writeBytes(twoHyphens + boundary + lineEnd);
        wr.writeBytes("Content-Disposition: form-data; name=\"filename\";" + lineEnd);
        wr.writeBytes(lineEnd);
        wr.writeBytes("kuro.png");
        wr.writeBytes(lineEnd);


        for(int i=0;i<data.length;i++) {
            wr.write(data[i]);
        }
        wr.writeBytes(lineEnd);
        wr.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
        con.connect();

        InputStream in = con.getInputStream();
        InputStreamReader objReader = new InputStreamReader(in);
        BufferedReader objBuf = new BufferedReader(objReader);
        StringBuilder objStr = new StringBuilder();
        String sLine;
        while ((sLine = objBuf.readLine()) != null) {
            objStr.append(sLine);
        }
//objStr.toString();//返り値
        in.close();
        objBuf.close();
        wr.flush();
        wr.close();

        System.out.println("Done");

        // Webサーバからの応答を表示する
        String line1;
        line1= displayResponse(con);

        // HTTP接続を切断する
        con.disconnect();
        return line1;
    }

android側から上記のようにアクションをコントローラを呼び出しました。
しかし、以下のように表示されpublic/img/kuro.pngというファイルは作成されましたが、なにもデータが入っていない状態です。
rails側の[img]に当たる部分をどのように記述すればよいのか、やり方が全く正しくないのかどなたかご教授ください。

コマンドプロンプトの表示

Started POST "/application/upload" for ******at 2017-06-08 15:22:42 +0900
Processing by ApplicationController#upload as HTML
  Parameters: {"filename"=>"kuro.png\r\n"}
NoMethodError (undefined method `read' for nil:NilClass):
 app/controllers/application_controller.rb:14:in `block in upload'
  app/controllers/application_controller.rb:13:in `open'
  app/controllers/application_controller.rb:13:in `upload'


  Rendered E:/Ruby22/lib/ruby/gems/2.2.0/gems/actionpack-4.0.2/lib/action_dispatch/middleware/templates/rescues/_source.erb (0.5ms)
  Rendered E:/Ruby22/lib/ruby/gems/2.2.0/gems/actionpack-4.0.2/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.0ms)
  Rendered E:/Ruby22/lib/ruby/gems/2.2.0/gems/actionpack-4.0.2/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.0ms)
  Rendered E:/Ruby22/lib/ruby/gems/2.2.0/gems/actionpack-4.0.2/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (249.7ms)