示例#1
0
 /**
  * Update a record
  *
  * @param Number  $id      ID of record
  * @param Request $request Current http request
  *
  * @return Response $response Result of action with data (if successful)
  */
 public function putAction($id, Request $request)
 {
     $contentType = $request->headers->get('Content-Type');
     if (substr(strtolower($contentType), 0, 16) === 'application/json') {
         return parent::putAction($id, $request);
     }
     $record = $this->findRecord($id);
     $file = $this->saveFile($id, $request->getContent());
     $record->getMetadata()->setSize((int) $file->getSize())->setMime($contentType);
     $this->getModel()->updateRecord($id, $record);
     // store id of new record so we dont need to reparse body later when needed
     $request->attributes->set('id', $record->getId());
     $response = $this->getResponse();
     $response->setStatusCode(Response::HTTP_OK);
     $routeName = $request->get('_route');
     if (substr($routeName, 0, -4) == '.put') {
         $routeName = substr($routeName, 0, -3) . 'get';
     }
     $response->headers->set('Location', $this->getRouter()->generate($routeName, array('id' => $record->getId())));
     return $response;
 }
示例#2
0
 /**
  * Update a record
  *
  * @param Number  $id      ID of record
  * @param Request $request Current http request
  *
  * @return Response $response Result of action with data (if successful)
  */
 public function putAction($id, Request $request)
 {
     $contentType = $request->headers->get('Content-Type');
     if (substr(strtolower($contentType), 0, 16) === 'application/json') {
         return parent::putAction($id, $request);
     }
     if (0 === strpos($contentType, 'multipart/form-data')) {
         $request = $this->normalizeRequest($request);
     }
     $response = $this->getResponse();
     $fileData = $this->validateRequest($request, $response, $request->get('metadata'));
     $files = $this->fileManager->saveFiles($request, $this->getModel(), $fileData);
     // store id of new record so we don't need to re-parse body later when needed
     $request->attributes->set('id', $files[0]);
     $response->setStatusCode(Response::HTTP_NO_CONTENT);
     // no service sends Location headers on PUT - /file shouldn't as well
     return $response;
 }