0

私は登録フォームを持っています。名、姓、ユーザー名などのユーザー情報に加えて、ユーザーに画像をアップロードする必要があります。AsyncTaskを使用してImageViewから文字列値で画像をアップロード

現在のところ、ImageViewに読み込まれた画像のサムネイルをカメラで取得して表示しています。今私は同様に画像をアップロードしたい。

私のRegister.javaのコードは以下の通りです。

String requested_method = "register"; 

RegisterTask registerTask = new RegisterTask(Register.this); 
registerTask.execute(requested_method, first_name_entered, last_name_entered, username_entered); 

RegisterTask.javaは、したがって、私はここに関連する情報を貼り付けています、大容量のファイルですので。

public class RegisterTask extends AsyncTask<String,Void,String> { 
    Context context; 

    public RegisterTask(Context ctx) { 
     context = ctx; 
    } 

    @Override 
    protected String doInBackground(String... params) { 
     String register_url = "http://my_website.com/register.php"; 
    String requested_method = params[0]; 
    String first_name = params[1]; 
    String last_name = params[2]; 
    String username = params[3]; 

    if (requested_method.equals("register")) { 
     try { 
      URL url = new URL(submit_order_url); 
      HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection(); 
      httpURLConnection.setRequestMethod("POST"); 
      httpURLConnection.setDoOutput(true); 
      httpURLConnection.setDoInput(true); 
      OutputStream outputStream = httpURLConnection.getOutputStream(); 
      BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream,"UTF-8")); 

      String data = URLEncoder.encode("first_name","UTF-8")+"="+URLEncoder.encode(first_name,"UTF-8")+"&" 
        +URLEncoder.encode("last_name","UTF-8")+"="+URLEncoder.encode(last_name,"UTF-8")+"&" 
        +URLEncoder.encode("username","UTF-8")+"="+URLEncoder.encode(username,"UTF-8"); 

      bufferedWriter.write(data); 
      bufferedWriter.flush(); 
      bufferedWriter.close(); 
      outputStream.close(); 

      InputStream inputStream = httpURLConnection.getInputStream(); 
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1")); 

      String response_data = ""; 
      String line = ""; 

      while((line = bufferedReader.readLine()) != null) { 
       response_data+= line; 
      } 

      bufferedReader.close(); 
      inputStream.close(); 
      httpURLConnection.disconnect(); 
      return response_data; 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

     return null; 
    } 
} 

このコードは正常に動作しています。

私がしたいことは、ImageViewで読み込んだイメージをこのAsyncTaskに追加してアップロードすることです。文字列と一緒にビットマップを送信しようとすると、エラーが発生しています。

どうすればよいですか?

+0

'文字列とともにビットマップを送信しようとすると、エラーが発生しています。あなたのコードと正確なエラーメッセージを表示してください。 「弦」とは何ですか? – greenapps

+0

私はこの文がナンセンスであるというあなたの意見に同意します。私は投稿する前にそれを削除しておくべきだった。 –

+0

エラー:(287、21)エラー:クラスAsyncTaskでメソッドが実行されます。は、指定された型には適用できません。 必須:String [] found:文字列、文字列、文字列、文字列、ビットマップ 理由:varargsが一致しません。 paramsがオブジェクトを拡張するクラスで宣言さAsyncTask 進捗状況は、オブジェクトを拡張 結果はクラスAsyncTask –

答えて

0

新しいクラスを使用し、RegistrationDetailsと呼び、現在の文字列とBitmapを含むようにします。そのクラスのインスタンスをAsyncTaskへの唯一の引数として渡してください。

関連する問題