Mysql
 sql >> Baza danych >  >> RDS >> Mysql

JSON i prześlij obraz na serwer

W moim podejściu użyłem org.apache.http.entity.mime.MultipartEntity i dodałem przekazaną nazwę pliku obrazu jako FileBody

entity.addPart("image_" + photo_count, new FileBody(
                        new File(failed.getFilenames()[i])));

następnie przekaż MultiPartEntity do HttpPost. Nie opublikowałem pełnego kodu, ponieważ zawiera mnóstwo komentarzy i kodu niezwiązanego z twoim pytaniem. Przekazując obraz jako FileBody, można go uzyskać za pomocą standardowego kodu obsługi plików php (patrz poniżej).

  if ((!empty($_FILES[$im])) && ($_FILES[$im]['error'] == 0)) {
              $newname = dirname(__FILE__) . '/../photo/' . $campaign . '/' . $fn;
              if (!file_exists($newname)) {
                  if (move_uploaded_file($_FILES[$im]['tmp_name'], $newname)) {
                      //$resp = "The file " . $fn . " has been uploaded";
                      //printf("%s", $resp);
                  } else {
                    $error = $error + 1;      
                  } 
              }else{
                //image file already exists
                $error = $error + 1;
              }
          } else {
              $error = $error +1;
          }

W moim celu powyższy kod był zapętlony, ponieważ miałem do czynienia z wieloma obrazami

$im = 'image_' . $i;

odnosi się do nazwy obrazu w encji.

Przepraszam za krótki post, spieszę się na czas.

Zapomniałem podać powód, dla którego nie użyłem podejścia opartego na łańcuchu Base64, ponieważ ogranicza on rozmiar obrazu, który możesz wysłać. Podejście FileBody w encji było najlepszym podejściem, jakie znalazłem.

Możesz przekazywać ciągi znaków za pomocą:

entity.addPart("address", new StringBody(failed[0].getAddress()));

HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 20000); // Timeout

MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
entity.addPart("address", new StringBody("my address example"));
entity.addPart("image_0", new FileBody(new File("filename of image")));

HttpPost post = new HttpPost("server address");
post.setEntity(entity);

HttpResponse response  = client.execute(post);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Usługi raportowania MySQL o otwartym kodzie źródłowym

  2. zwróć średnią liczebności rekordów po grupie według instrukcji

  3. PHP konwertuje datę i czas na sekundy

  4. django.db.utils.OperationalError:(2026, „Błąd połączenia SSL:SSL_CTX_set_tmp_dh nie powiodło się”)

  5. „max_user_connections” ustawiono na 200 – nadal pojawia się błąd