O conteúdo é ???livre para ser definido pelo usuário?
Sim.
ou é fornecido pelo HTML?
Não. O HTML não tem nada a ver com isso. Leia abaixo.
É possível definir o ???as abcdefg?
Sim.
Se você deseja enviar os seguintes dados para o servidor web:
name = John
age = 12
usando application/x-www-form-urlencodedseria assim:
name=John&age=12
Como você pode ver, o servidor sabe que os parâmetros são separados por um e comercial &. Se &for necessário para um valor de parâmetro, ele deverá ser codificado.
Então, como o servidor sabe onde um valor de parâmetro começa e termina quando recebe uma solicitação HTTP usando multipart/form-data?
Usando o limite , semelhante a &.
Por exemplo:
--XXX
Content-Disposition: form-data; name="name"
John
--XXX
Content-Disposition: form-data; name="age"
12
--XXX--
Nesse caso, o valor limite é XXX. Você o especifica no Content-Typecabeçalho para que o servidor saiba como dividir os dados que recebe.
Então você precisa: