sql >> Database >  >> RDS >> Mysql

JSON en afbeelding uploaden naar server

In mijn benadering gebruikte ik org.apache.http.entity.mime.MultipartEntity en voegde de naam van het afbeeldingsbestand toe als een FileBody

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

geef dan de MultiPartEntity door aan de HttpPost. Ik heb geen volledige code gepost omdat er heel veel opmerkingen en code zijn die niets met uw vraag te maken hebben. Door de afbeelding door te geven als een FileBody is het mogelijk om de afbeelding op te halen met behulp van de stand php-bestandsverwerkingscode (zie hieronder).

  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;
          }

Voor mijn doel was de bovenstaande code in een lus omdat ik met meerdere afbeeldingen te maken had

$im = 'image_' . $i;

verwijst naar de naam van de afbeelding in de entiteit.

Sorry voor de korte post, ik heb haast.

Vergeten te vermelden waarom ik de Base64-stringbenadering niet heb gebruikt, is dat het de grootte van de afbeelding die u kunt verzenden, beperkt. De FileBody-aanpak in de entiteit was de beste benadering die ik vond.

U kunt strings doorgeven met:

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. De 2008 R2-bugfix die RCSI doorbreekt

  2. Python 'float64' kan niet worden geconverteerd naar een MySQL-type, maar in handmatige query is dat geen probleem

  3. Zoek uit of een object een tabelwaarde-functie is in SQL Server met OBJECTPROPERTY()

  4. mysql_query() verwacht dat parameter 2 resource is, string opgegeven in