Caricamento di un'image da Android (con Android Asynchronous Http Client) al server binario (con clip in carta)

Sto provando a caricare un file di image tramite il metodo http post dal dispositivo android al server binari. Ma la pubblicazione di un'image non funziona. Più specificamente, il parametro post (compreso il file image) non sembra essere inviato correttamente.

Sto usando Android Asynchronous Http Client (http://loopj.com/android-async-http/) per submit un'image da android e il codice per l'invio di immagini è simile.

  • LocationClient non rilascia il richiamo quando la spia dello schermo si spegne ma il mio WakefulThread funziona correttamente come previsto
  • Come impostare le immagini dymaniche in ViewFlipper in android?
  • Come get un riferimento al servizio in esecuzione?
  • Crittografia dei dati in Android
  • Controllo onclicklistener in testview abilitato per autolink
  • Eclipse non riconosce il mio dispositivo Android
  • public static void postImage(){ RequestParams params = new RequestParams(); params.put("picture[name]","MyPictureName"); params.put("picture[image]",File(Environment.getExternalStorageDirectory().getPath() + "/Pictures/CameraApp/test.jpg")); AsyncHttpClient client = new AsyncHttpClient(); client.post("http://xxxx:3000/pictures/", params, new AsyncHttpResponseHandler() { @Override public void onSuccess(String response) { Log.w("async", "success!!!!"); } }); } 

    Per quanto riguarda le applicazioni di rotaia delle rotaie, ho semplicemente usato scaffold e generato il model chiamato "immagini" e aggiunto il file allegato paperclip su di esso. Il model e il controller (che riceve la richiesta) sono come sotto.

    model

     class Picture < ActiveRecord::Base attr_accessible :name, :image has_attached_file :image, :styles => { :original => "480x480>", :thumbnail => "100x100>" }, :path => ':rails_root/public/system/pictures/image/:id_partition/:style_:filename' end 

    controllore

     # POST /pictures # POST /pictures.json def create @picture = Picture.new(params[:picture]) respond_to do |format| if @picture.save format.html { redirect_to @picture, notice: 'Picture was successfully created.' } format.json { render json: @picture, status: :created, location: @picture } else format.html { render action: "new" } format.json { render json: @picture.errors, status: :unprocessable_entity } end end end 

    Al ricevimento della richiesta, la console "rails server" dice qualcosa di simile

     Started POST "/pictures/" for yyyy at 2012-09-03 18:23:00 +0900 Processing by PicturesController#create as HTML Parameters: {"picture"=>{"name"=>"PictureName"}} (0.1ms) begin transaction SQL (0.5ms) INSERT INTO "pictures" ("album_id", "created_at", "image_content_type", "image_file_name", "image_file_size", "image_updated_at", "name", "updated_at", "user_id") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) [["album_id", nil], ["created_at", Mon, 03 Sep 2012 09:23:00 UTC +00:00], ["image_content_type", nil], ["image_file_name", nil], ["image_file_size", nil], ["image_updated_at", nil], ["name", "PictureName"], ["updated_at", Mon, 03 Sep 2012 09:23:00 UTC +00:00], ["user_id", nil]] [paperclip] Saving attachments. (11.0ms) commit transaction Redirected to http://xxxx:3000/pictures/10 Completed 302 Found in 15ms (ActiveRecord: 11.6ms) 

    Come potete vedere, c'è solo un paramater inviato e il parametro "picture [image]" che non è ricevuto dai dati dell'image grezzi. Qualcuno può aiutarmi?

  • Come get Android Studio per riconoscere file come sorgente (test)
  • FirebaseApp con il nome non esiste
  • Richiedere la password prima di disinstallare l'applicazione
  • Query where si trova e where
  • Come cancellare AlarmClock creata dalla mia app?
  • Telecamere in un process di servizio / background
  • 3 Solutions collect form web for “Caricamento di un'image da Android (con Android Asynchronous Http Client) al server binario (con clip in carta)”

    Mi dispiace, era il mio errore sciocco. dovrei aver finito

     params.put("picture[image]", new File(Environment.getExternalStorageDirectory().getPath() + "/Pictures/CameraApp/test.jpg")); 

    non

     params.put("picture[image]", File(Environment.getExternalStorageDirectory().getPath() + "/Pictures/CameraApp/test.jpg")); 

    Utilizzare Nuovo file non File

    Quando si utilizza Android Asynchronous Http Client ( http://loopj.com/android-async-http/ ), non dobbiamo preoccuparci di MultipartEntity. Grazie a tutti i ragazzi che hanno risposto alla mia domanda !!!!

    È ansible caricare le immagini tramite MultipartEntity.

    MultipartEntity, parte di HttpMime 4.0 e versioni successive. Consente di inserire più parti, separate da stringhe di limiti e codificate utilizzando il carattere specificato, nella richiesta httppost.

    Per ulteriori informazioni e su come utilizzare Multipart, vedere questo e questo .

    C'è una descrizione come qui sotto, nella pagina ufficiale di Android AsyncHttpClient (http://loopj.com/android-async-http/)

    "Caricamenti multipli di file senza ulteriori librerie di terze parti"

    e nella sezione "Caricamento di file con RequestParams", hanno un codice di esempio per caricare un'image

     File myFile = new File("/path/to/file.png"); RequestParams params = new RequestParams(); try { params.put("profile_picture", myFile); } catch(FileNotFoundException e) {} 

    Questo è ciò che ho fatto, anche se non funzionava. Questo aiuta a rispondere alla mia domanda?

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.