定制 goetas/multipart-upload-bundle 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

goetas/multipart-upload-bundle

最新稳定版本:1.5.0

Composer 安装命令:

composer require goetas/multipart-upload-bundle

包简介

Goetas MultipartUploadBundle

README 文档

README

Build Status Latest Stable Version Code Coverage Scrutinizer Code Quality

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.

Install

Run composer require goetas/multipart-upload-bundle

Add bundle to symfony (if not using symfony/flex)

Request format

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

Usage

Controller

Body will not be decoded automatically, you can decode it by yourself or use FOSRestBundle to handle it transparently

public function indexAction(Request $request)
{
    if ('application/json' == $request->headers->get('content-type')) {
        $data = json_decode($request->getContent(), true);
    }
}

Form Fields

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

Uploaded Files

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

Attachment Files

Parts with attachment; filename= in Content-Disposition part's headers will be treated as an attachment file.

$attachment = $request->attributes->get('attachments')[0];

Related Parts

Parts without a filename will be treated as Riverline\MultiPartParser\StreamedPart object. Will be possible to access as well all the parts trough the related-parts attribute.

$part = $request->attributes->get('related-parts')[0];
  • Get part's headers
$headers = $part->getHeaders()->all();
  • Get part's content
$content = $part->getContent();
  • Get part's content as resource
$content = stream_get_contents($part->getContent(true));
  • First part injected

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

Configurations

goetas_multipart_upload:
  first_part_as_default: true

Note

The code in this project is provided under the MIT license. For professional support contact goetas@gmail.com or visit https://www.goetas.com

统计信息

  • 总下载量: 20.11k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 21
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 21
  • Watchers: 2
  • Forks: 5
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-12-12