# multipart/form-data boundary



## AmunRa (16. Aug 2010)

Hallo 

ich schreib gerade ein Programm das ein webformular parst und dem User dan eine GUI anbietet in dem er die Daten eingeben muss. mein Problem liegt jetzt daran das ganze dann auch wieder zu senden.

genau gesagt geht es um den sog. Baundary wert den man hier mitgeben muss. 

Ich habe bis jetzt nirgends gefunden wie sich dieser berechnet. 
auf dieser Seite hab ich nun folgendes gelesen.



> As with other multipart types, a boundary is selected that does not
> occur in any of the data. Each field of the form is sent, in the
> order defined by the sending appliction and form, as a part of the
> multipart stream.  Each part identifies the INPUT name within the
> ...



Da hier auch nicht wriklich etwas steht wie sich diese Boundary berechnet hab ich ja nun den verdacht, dass ich diesen Wert einfach frei wählen darf, oder sehe ich das falsch?

Weis jemand wie man den korrekten wert errechnet/auswählt?

Vielen Dank


----------



## Sued_Faust (17. Aug 2010)

Das ist im grunde nur eine ID.
Ich habe es immer so gemacht, dass ich mir randomisierte Zahlen hab errechnen lassen.


```
protected static String randomString() {
		random = new Random();
		return Long.toString(random.nextLong(), 36);
	}
```

Gruß


----------



## maki (17. Aug 2010)

Der RFC 1867 ist da minimal ausführlciher:


> 3.3 use of multipart/form-data
> 
> The definition of multipart/form-data is included in section 7.  A
> boundary is selected that does not occur in any of the data. *(This
> ...


Wichtig scheint nur zu sien, dass die Boundary nicht bereits in den Daten vorkommt.


----------



## Der Müde Joe (17. Aug 2010)

>Weis jemand wie man den korrekten wert errechnet/auswählt?

Wie du gesagt hast, frei wählbar.
Hab mir mal für EMail multiparts sowas gebastelt


```
/**
 * Helper to create unique id.
 */
private static final class UniqueCreator {

	static int counter = 1;

	public static final int getUniqueId() {
		if(counter > 0) {
			return ++counter;
		}
		counter = 1;
		return getUniqueId();
	}
}
private static final String createUniqueId() {
	StringBuilder result = new StringBuilder();
	result.append("---Part=").append(UniqueCreator.getUniqueId());
	result.append('_').append(result.hashCode());
	result.append('_').append(System.currentTimeMillis());
	return result.toString();
}
```


----------



## AmunRa (17. Aug 2010)

Danke für eure Antworten 

ich habs jetzt auch so gelöst mit der aktuellen Uhrzeit


```
boundary= Long.toString(System.currentTimeMillis(),16)
```


----------

