Symfony multipart/related/mixed/alternative content type handler (rfc1341).
MIT License
Bot releases are hidden (Show)
Full Changelog: https://github.com/goetas/MultipartUploadBundle/compare/1.4.0...1.5.0
Published by goetas 9 months ago
Full Changelog: https://github.com/goetas/MultipartUploadBundle/compare/1.3.0...1.4.0
Published by goetas about 2 years ago
Full Changelog: https://github.com/goetas/MultipartUploadBundle/compare/1.2.1...1.3.0
Published by goetas almost 3 years ago
Full Changelog: https://github.com/goetas/MultipartUploadBundle/compare/1.2.0...1.2.1
Published by goetas about 3 years ago
Published by goetas over 3 years ago
Published by goetas over 5 years ago
multipart/form-data
requestsPublished by goetas over 5 years ago
Published by goetas almost 6 years ago
Minor fixed on documentation and deprecation warning for symfony 4
Published by goetas almost 6 years ago
Symfony multipart/related
, multipart/alternative
and multipart/mixed
content type handler.
This bundle implements a subset of the https://www.w3.org/Protocols/rfc1341/7_2_Multipart.html specifications
and allows you to deal with Content-Type: multipart/*;
requests with Symfony.
Run composer require goetas/multipart-upload-bundle
Add bundle to symfony (if not using symfony/flex)
A multipart/related
request could look like this:
Host: localhost
Content-Type: multipart/related; boundary=19D523FB
--19D523FB
Content-Type: application/json
{
"content": "Some JSON content"
}
--19D523FB
Content-Type: image/png
Content-Disposition: form-data; name="image"; filename="image.jpg"
Content-MD5: 314ca078416a9b27efbe338ac5a2f727
... binary content...
Content-Type: text/html
Content-Disposition: form-data; name="content"
Content-MD5: 314ca078416a9b27efbe338ac5a2f727
<a href="https://github.com/goetas/MultipartUploadBundle">HTML content</a>
--19D523FB
Content-Type: image/png
Content-Disposition: attachment; filename="image.jpg"
Content-MD5: 314ca078416a9b27efbe338ac5a2f727
... binary content...
--19D523FB
Content-Type: octet/stream
X-Custom-Header: header value
... binary content...
--19D523FB--
Body will not be decoded automatically, you can decode it by yourself or use FOSRestBundle to handle it transparently
public function (Request $request)
{
if ('application/json' == $request->headers->get('content-type')) {
$data = json_decode($request->getContent(), true);
}
}
Parts with form-data; name=
in Content-Disposition
part's headers
will be treated like an regular uploaded file.
$html = $request->request->get('content');
Can be used with Symfony's form builder
$builder->add('content', TextAreaType::class);
Parts with form-data; name=
and filename=
in Content-Disposition
part's headers
will be treated like an regular uploaded file.
$file = $request->files->get('image');
Can be used with Symfony's form builder
$builder->add('image', FileType::class);
Parts with attachment; filename=
in Content-Disposition
part's headers
will be treated as an attachment file.
$attachment = $request->attributes->get('attachments')[0];
Parts without a filename
will be treated as RelatedPart
object.
$part = $request->attributes->get('related-parts')[0];
$headers = $part->getHeaders()->all();
$content = $part->getContent();
$content = stream_get_contents($part->getContent(true));
By default, when a message is multipart/*
, the first part will become the Symfony message content.
You can disable this by setting first_part_as_default
to false
.
$content = $request->getContent(); // content of the first part, not the whole message
goetas_multipart_upload:
first_part_as_default: true
The code in this project is provided under the
MIT license.
For professional support
contact [email protected]
or visit https://www.goetas.com