Reactjs 无法使用react.js和laravel更新包含formData的PUT请求

Reactjs 无法使用react.js和laravel更新包含formData的PUT请求,reactjs,laravel,rest,api,Reactjs,Laravel,Rest,Api,我没有在Api端点中接收由fetch and PUT方法发送的formdata 我使用了POST方法,它解决了我认为不建议更新的问题。 我在localhost:3000上运行react,在localhost:5000上运行laravelapi 这是API中的路由 这就是控制器中的内容 这是发送到fetch的函数 在我的标题中,我没有内容类型 我希望来自LaravelAPI函数的json数据,但我有一个错误,“只能抛出对象”PHP不解析PUT请求的主体 使用POST并添加参数\u方法和值PUTPH

我没有在Api端点中接收由fetch and PUT方法发送的formdata

我使用了POST方法,它解决了我认为不建议更新的问题。 我在localhost:3000上运行react,在localhost:5000上运行laravelapi

这是API中的路由 这就是控制器中的内容 这是发送到fetch的函数 在我的标题中,我没有内容类型


我希望来自LaravelAPI函数的json数据,但我有一个错误,“只能抛出对象”

PHP不解析PUT请求的主体


使用
POST
并添加参数
\u方法
和值
PUT

PHP PUT给我带来了困难,使用此函数将节省解析时间,其他方法:

function parsePutRequest()
    {
        // Fetch content and determine boundary
        $raw_data = file_get_contents('php://input');
        $boundary = substr($raw_data, 0, strpos($raw_data, "\r\n"));

    // Fetch each part
    $parts = array_slice(explode($boundary, $raw_data), 1);
    $data = array();

    foreach ($parts as $part) {
        // If this is the last part, break
        if ($part == "--\r\n") break; 

        // Separate content from headers
        $part = ltrim($part, "\r\n");
        list($raw_headers, $body) = explode("\r\n\r\n", $part, 2);

        // Parse the headers list
        $raw_headers = explode("\r\n", $raw_headers);
        $headers = array();
        foreach ($raw_headers as $header) {
            list($name, $value) = explode(':', $header);
            $headers[strtolower($name)] = ltrim($value, ' '); 
        } 

        // Parse the Content-Disposition to get the field name, etc.
        if (isset($headers['content-disposition'])) {
            $filename = null;
            preg_match(
                '/^(.+); *name="([^"]+)"(; *filename="([^"]+)")?/', 
                $headers['content-disposition'], 
                $matches
            );
            list(, $type, $name) = $matches;
            isset($matches[4]) and $filename = $matches[4]; 

            // handle your fields here
            switch ($name) {
                // this is a file upload
                case 'userfile':
                    file_put_contents($filename, $body);
                    break;

                // default for all other files is to populate $data
                default: 
                    $data[$name] = substr($body, 0, strlen($body) - 2);
                    break;
            } 
        }

    }
    return $data;
}
public function updateImage(Request $request, int $id)

{

    $image = $this->slideRepo->findSlideById($id)->image;


    if ($image) {
        $result = Storage::disk('ucmp')->delete($image);
    }

    if ($request->hasFile('image') && $request->file('image') instanceof UploadedFile) {
        return  $this->slideRepo->saveCover($request->file('image'));

    }        // return response()->json($data);

    // data is an array (note)
    return null;
}


public function updateSlide(Request $request, int $id)
{
    $imageUrl=$this->updateImage($request, $id);

    return response()->json($this->slideRepo->updateSlide([
        'caption' => $request['caption'],
        'image' => $imageUrl,
        'url' => $request['url']
    ],$id));
}
export const updateSlideApi = (token, _slide, id) => {
  return {
    url: `${BASE_URL}/api/updateSlide/${id}`,
    opt: API.requestOptions("PUT",token,null,{ body: _slide }, true)
  };
};
function parsePutRequest()
    {
        // Fetch content and determine boundary
        $raw_data = file_get_contents('php://input');
        $boundary = substr($raw_data, 0, strpos($raw_data, "\r\n"));

    // Fetch each part
    $parts = array_slice(explode($boundary, $raw_data), 1);
    $data = array();

    foreach ($parts as $part) {
        // If this is the last part, break
        if ($part == "--\r\n") break; 

        // Separate content from headers
        $part = ltrim($part, "\r\n");
        list($raw_headers, $body) = explode("\r\n\r\n", $part, 2);

        // Parse the headers list
        $raw_headers = explode("\r\n", $raw_headers);
        $headers = array();
        foreach ($raw_headers as $header) {
            list($name, $value) = explode(':', $header);
            $headers[strtolower($name)] = ltrim($value, ' '); 
        } 

        // Parse the Content-Disposition to get the field name, etc.
        if (isset($headers['content-disposition'])) {
            $filename = null;
            preg_match(
                '/^(.+); *name="([^"]+)"(; *filename="([^"]+)")?/', 
                $headers['content-disposition'], 
                $matches
            );
            list(, $type, $name) = $matches;
            isset($matches[4]) and $filename = $matches[4]; 

            // handle your fields here
            switch ($name) {
                // this is a file upload
                case 'userfile':
                    file_put_contents($filename, $body);
                    break;

                // default for all other files is to populate $data
                default: 
                    $data[$name] = substr($body, 0, strlen($body) - 2);
                    break;
            } 
        }

    }
    return $data;
}