Giter Club home page Giter Club logo

Comments (2)

boesing avatar boesing commented on June 4, 2024 1

I've written a PoC in https://github.com/boesing/http-factory-multipart
Needed to support PHP 7.3 for the project I am currently working on. Will migrate that project to 8.1 later this year and until then I use my library.

However, I still think this could be a useful addition to this component and thus I'd be fine with integrating that code to this component.

from laminas-diactoros.

boesing avatar boesing commented on June 4, 2024

Implementation with guzzle

$response = $guzzleClient->post('message/', [
    'allow_redirects' => false,
    'multipart' => [
        [
            'name'     => 'account',
            'contents' => 'example'
        ],
        [
            'name'     => 'type',
            'contents' => 'in'
        ],
        [
            'name'     => 'product',
            'contents' => 'alias'
        ],
        [
            'name'     => 'template',
            'contents' => 'incoming'
        ],
        [
            'name'     => 'open_tracking',
            'contents' => 'no'
        ],
        [
            'name'     => 'delay',
            'contents' => (1 + $index)
        ],
        [
            'name'     => 'file',
            'contents' => $contents,
            'filename' => date('Y-m-d_H-i-s_u_Z'),
        ]
    ]
]);

Implementation with above suggested interfaces

$request = $this->requestFactory->createRequest(RequestMethodInterface::METHOD_POST, '/message/');
$stream = $this->streamFactory->createMultipartStream(
    uniqid('', true),
    $this->streamFactory->createPartOfMultipart(
        $this->streamFactory->createStream('example'),
        'account'
    ),
    $this->streamFactory->createPartOfMultipart(
        $this->streamFactory->createStream('in'),
        'type'
    ),
    $this->streamFactory->createPartOfMultipart(
        $this->streamFactory->createStream('alias'),
        'product'
    ),
    $this->streamFactory->createPartOfMultipart(
        $this->streamFactory->createStream('incoming'),
        'template'
    ),
    $this->streamFactory->createPartOfMultipart(
        $this->streamFactory->createStream('no'),
        'open_tracking'
    ),
    $this->streamFactory->createPartOfMultipart(
        $this->streamFactory->createStream((string) ($index + 1)),
        'delay'
    ),
    $this->streamFactory->createPartOfMultipart(
        $this->streamFactory->createStream($contents),
        'file',
        date('Y-m-d_H-i-s_u_Z')
    )
);

$response = $psr18Client->sendRequest(
    $request->withBody($stream)
        ->withHeader('Content-Type', sprintf('multipart/form-data; boundary="%s"', $stream->getBoundary()))
);

from laminas-diactoros.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.