/** * Save uploaded image according to comur_image field configuration * * @param Request $request */ public function uploadImageAction(Request $request) { $config = json_decode($request->request->get('config'), true); $uploadUrl = $config['uploadConfig']['uploadUrl']; $uploadUrl = substr($uploadUrl, -strlen('/')) === '/' ? $uploadUrl : $uploadUrl . '/'; // We must use a streamed response because the UploadHandler echoes directly $response = new StreamedResponse(); $webDir = $config['uploadConfig']['webDir']; $webDir = substr($webDir, -strlen('/')) === '/' ? $webDir : $webDir . '/'; $filename = sha1(uniqid(mt_rand(), true)); $thumbsDir = $this->container->getParameter('comur_image.thumbs_dir'); $thumbSize = $this->container->getParameter('comur_image.media_lib_thumb_size'); $galleryDir = $this->container->getParameter('comur_image.gallery_dir'); $gThumbSize = $this->container->getParameter('comur_image.gallery_thumb_size'); $ext = $request->files->get('image_upload_file')->getClientOriginalExtension(); //('image_upload_file'); $completeName = $filename . '.' . $ext; $controller = $this; $handlerConfig = array('upload_dir' => $uploadUrl, 'param_name' => 'image_upload_file', 'file_name' => $filename, 'upload_url' => $config['uploadConfig']['webDir'], 'min_width' => $config['cropConfig']['minWidth'], 'min_height' => $config['cropConfig']['minHeight'], 'image_versions' => array('thumbnail' => array('upload_dir' => $uploadUrl . $thumbsDir . '/', 'upload_url' => $config['uploadConfig']['webDir'] . '/' . $thumbsDir . '/', 'crop' => true, 'max_width' => $thumbSize, 'max_height' => $thumbSize))); $transDomain = $this->container->getParameter('comur_image.translation_domain'); $errorMessages = array(1 => $this->get('translator')->trans('The uploaded file exceeds the upload_max_filesize directive in php.ini', array(), $transDomain), 2 => $this->get('translator')->trans('The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form', array(), $transDomain), 3 => $this->get('translator')->trans('The uploaded file was only partially uploaded', array(), $transDomain), 4 => $this->get('translator')->trans('No file was uploaded', array(), $transDomain), 6 => $this->get('translator')->trans('Missing a temporary folder', array(), $transDomain), 7 => $this->get('translator')->trans('Failed to write file to disk', array(), $transDomain), 8 => $this->get('translator')->trans('A PHP extension stopped the file upload', array(), $transDomain), 'post_max_size' => $this->get('translator')->trans('The uploaded file exceeds the post_max_size directive in php.ini', array(), $transDomain), 'max_file_size' => $this->get('translator')->trans('File is too big', array(), $transDomain), 'min_file_size' => $this->get('translator')->trans('File is too small', array(), $transDomain), 'accept_file_types' => $this->get('translator')->trans('Filetype not allowed', array(), $transDomain), 'max_number_of_files' => $this->get('translator')->trans('Maximum number of files exceeded', array(), $transDomain), 'max_width' => $this->get('translator')->trans('Image exceeds maximum width', array(), $transDomain), 'min_width' => $this->get('translator')->trans('Image requires a minimum width (%min%)', array('%min%' => $config['cropConfig']['minWidth']), $transDomain), 'max_height' => $this->get('translator')->trans('Image exceeds maximum height', array(), $transDomain), 'min_height' => $this->get('translator')->trans('Image requires a minimum height (%min%)', array('%min%' => $config['cropConfig']['minHeight']), $transDomain), 'abort' => $this->get('translator')->trans('File upload aborted', array(), $transDomain), 'image_resize' => $this->get('translator')->trans('Failed to resize image', array(), $transDomain)); $response->setCallback(function () use($handlerConfig, $errorMessages) { new UploadHandler($handlerConfig, true, $errorMessages); }); return $response->send(); }
/** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $uri = $request->path(); $uri_arr = explode("/", $uri); if (in_array($uri, $this->noAuth)) { return $next($request); } else { if ($uri_arr[0] == "stream") { $res = $this->permissionForStream($request, $next, $uri_arr[2]); if ($res['status'] == "2") { header('Content-Type: text/event-stream'); header('Cache-Control: no-cache'); $response = new StreamedResponse(); $response->setCallback(function () use($res) { $output = json_encode($res); echo "data:" . $output . "\n\n"; flush(); //sleep(1); }); $response->send(); exit; } else { return $next($request); } } else { $this->_init_($request); return $this->permissionToAccess($request, $next); } } }
/** * Export the workbook. * * @param null|string $filename * * @throws \Exception * @return mixed|void */ public function stream($filename = null) { $filename = $this->getFilename($filename); $output = $this->getExportable()->getDriver()->getOutputFromHtml($this->convertToHtml($this->getExportable())); $response = new StreamedResponse(function () use($output) { echo $output; }, 200, ['Content-Type' => 'application/pdf', 'Content-Disposition' => 'inline; filename="' . $filename . '.' . $this->getExtension() . '"']); return $response->send(); }
/** * @Route( * "/image/{node}", * name="claro_image" * ) */ public function fileAction(ResourceNode $node) { $image = $this->get('claroline.manager.resource_manager')->getResourceFromNode($node); $response = new StreamedResponse(); $path = $this->container->getParameter('claroline.param.files_directory') . DIRECTORY_SEPARATOR . $image->getHashName(); $response->setCallBack(function () use($path) { readfile($path); }); $response->headers->set('Content-Type', $node->getMimeType()); return $response->send(); }
/** * CSV出力の共通処理 * @param Application $app * @param Request $request * @param string $type CSV出力形式の種類 * @return StreamedResponse */ public function export(Application $app, Request $request, $type) { // タイムアウトを無効にする. set_time_limit(0); $response = new StreamedResponse(); $response->setCallback(function () use($app, $request, $type) { $app['listing_ad_csv.service.listingad.data.creator']->create($app, $request, $type); }); $response->headers->set('Content-Type', 'application/octet-stream'); $response->headers->set('Content-Disposition', 'attachment; filename=' . $this->createFileName($type)); $response->send(); return $response; }
/** * @EXT\Route( * "resource/media/{node}", * name="claro_file_get_media", * options={"expose"=true} * ) * * @param integer $id * * @return Response */ public function streamMediaAction(ResourceNode $node) { $collection = new ResourceCollection(array($node)); $this->checkAccess('OPEN', $collection); $file = $this->get('claroline.manager.resource_manager')->getResourceFromNode($node); $path = $this->container->getParameter('claroline.param.files_directory') . DIRECTORY_SEPARATOR . $file->getHashName(); $response = new StreamedResponse(); $response->setCallBack(function () use($path) { readfile($path); }); $response->headers->set('Content-Type', $node->getMimeType()); $response->send(); return new Response(); }
/** * @EXT\Route( * "/download/{pdf}", * name="claro_pdf_download", * options={"expose"=true} * ) * @EXT\ParamConverter( * "pdf", * class="ClarolinePdfGeneratorBundle:Pdf", * options={"mapping": {"pdf": "guid"}} * ) * * @param array $nodes * @param bool $forceArchive * * @return \Symfony\Component\HttpFoundation\Response */ public function download(Pdf $pdf) { $response = new StreamedResponse(); $file = $this->pdfManager->getFile($pdf); $response->setCallBack(function () use($file) { readfile($file); }); $response->headers->set('Content-Transfer-Encoding', 'octet-stream'); $response->headers->set('Content-Type', 'application/force-download'); $response->headers->set('Content-Disposition', 'attachment; filename=' . urlencode($pdf->getName() . '.pdf')); $response->headers->set('Content-Type', 'application/pdf'); $response->headers->set('Connection', 'close'); $response->send(); }
/** * {@inheritdoc} */ public function renderFile(CRUDEntity $entity, $entityName, $field) { $targetPath = $this->getPath($entityName, $entity, $field); $fileName = $entity->get($field); $file = $targetPath . '/' . $fileName; $response = new Response(''); $finfo = finfo_open(FILEINFO_MIME_TYPE); $mimeType = finfo_file($finfo, $file); finfo_close($finfo); $size = filesize($file); if ($fileName && file_exists($file)) { $response = new StreamedResponse(CRUDStreamedFileResponse::getStreamedFileFunction($file), 200, array('Content-Type' => $mimeType, 'Content-Disposition' => 'attachment; filename="' . $fileName . '"', 'Content-length' => $size)); $response->send(); } return $response; }
/** * @EXT\Route( * "/download/invoice/{invoice}", * name="invoice_download" * ) * * @return Response */ public function downloadAction(Invoice $invoice) { $user = $this->tokenStorage->getToken()->getUser(); if ($invoice->getChart()->getOwner() !== $user && !$this->authorization->isGranted('ROLE_ADMIN')) { throw new AccessDeniedException(); } $file = $this->invoiceManager->getPdf($invoice); $response = new StreamedResponse(); $response->setCallBack(function () use($file) { readfile($file); }); $response->headers->set('Content-Transfer-Encoding', 'octet-stream'); $response->headers->set('Content-Type', 'application/force-download'); $response->headers->set('Content-Disposition', 'attachment; filename=invoice-' . $invoice->getInvoiceNumber() . '.pdf'); $response->headers->set('Content-Type', 'application/pdf'); $response->headers->set('Connection', 'close'); $response->send(); return new Response(); }
public function recalculateAction(Player $me, $match) { $match = Match::get($match); // get a match even if it's deleted if (!$me->canEdit($match)) { throw new ForbiddenException("You are not allowed to edit that match."); } return $this->showConfirmationForm(function () use($match) { $response = new StreamedResponse(); $response->headers->set('Content-Type', 'text/plain'); $response->setCallback(function () use($match) { $this->recalculate($match); }); $response->send(); }, "Do you want to recalculate ELO history for all teams and matches after the specified match?", "ELO history recalculated", "Recalculate ELOs", function () use($match) { if ($match->isDeleted()) { return new RedirectResponse($match->getURL('list')); } return new RedirectResponse($match->getURL('show')); }, "Match/recalculate.html.twig", $noButton = true); }
/** * 商品CSVの出力. * * @param Application $app * @param Request $request * @return StreamedResponse */ public function export(Application $app, Request $request) { // タイムアウトを無効にする. set_time_limit(0); // sql loggerを無効にする. $em = $app['orm.em']; $em->getConfiguration()->setSQLLogger(null); $response = new StreamedResponse(); $response->setCallback(function () use($app, $request) { // CSV種別を元に初期化. $app['eccube.service.csv.export']->initCsvType(CsvType::CSV_TYPE_PRODUCT); // ヘッダ行の出力. $app['eccube.service.csv.export']->exportHeader(); // 商品データ検索用のクエリビルダを取得. $qb = $app['eccube.service.csv.export']->getProductQueryBuilder($request); // joinする場合はiterateが使えないため, select句をdistinctする. // http://qiita.com/suin/items/2b1e98105fa3ef89beb7 // distinctのmysqlとpgsqlの挙動をあわせる. // http://uedatakeshi.blogspot.jp/2010/04/distinct-oeder-by-postgresmysql.html $qb->resetDQLPart('select')->resetDQLPart('orderBy')->select('p')->orderBy('p.update_date', 'DESC')->distinct(); // データ行の出力. $app['eccube.service.csv.export']->setExportQueryBuilder($qb); $app['eccube.service.csv.export']->exportData(function ($entity, $csvService) { $Csvs = $csvService->getCsvs(); /** @var $Product \Eccube\Entity\Product */ $Product = $entity; /** @var $Product \Eccube\Entity\ProductClass[] */ $ProductClassess = $Product->getProductClasses(); foreach ($ProductClassess as $ProductClass) { $row = array(); // CSV出力項目と合致するデータを取得. foreach ($Csvs as $Csv) { // 商品データを検索. $data = $csvService->getData($Csv, $Product); if (is_null($data)) { // 商品規格情報を検索. $data = $csvService->getData($Csv, $ProductClass); } $row[] = $data; } //$row[] = number_format(memory_get_usage(true)); // 出力. $csvService->fputcsv($row); } }); }); $now = new \DateTime(); $filename = 'product_' . $now->format('YmdHis') . '.csv'; $response->headers->set('Content-Type', 'application/octet-stream'); $response->headers->set('Content-Disposition', 'attachment; filename=' . $filename); $response->send(); return $response; }
/** * The controller for serving static files. * * @param Request $request * the current request * @param Application $app * the Silex application * * @return Response * redirects to the instance details page or 404 on invalid input */ public function staticFile(Request $request, Application $app) { $fileParam = str_replace('..', '', $request->get('file')); $file = __DIR__ . '/../static/' . $fileParam; if (!$fileParam || !file_exists($file)) { return $this->getNotFoundPage($app, $app['translator']->trans('crudlex.resourceNotFound')); } $mimeTypes = new MimeTypes(); $mimeType = $mimeTypes->getMimeType($file); $size = filesize($file); $streamedFileResponse = new StreamedFileResponse(); $response = new StreamedResponse($streamedFileResponse->getStreamedFileFunction($file), 200, ['Content-Type' => $mimeType, 'Content-Disposition' => 'attachment; filename="' . basename($file) . '"', 'Content-length' => $size]); $response->setETag(filemtime($file))->setPublic()->isNotModified($request); $response->send(); return $response; }
/** * 配送CSVの出力. * * @param Application $app * @param Request $request * @return StreamedResponse */ public function exportShipping(Application $app, Request $request) { // タイムアウトを無効にする. set_time_limit(0); // sql loggerを無効にする. $em = $app['orm.em']; $em->getConfiguration()->setSQLLogger(null); $response = new StreamedResponse(); $response->setCallback(function () use($app, $request) { // CSV種別を元に初期化. $app['eccube.service.csv.export']->initCsvType(CsvType::CSV_TYPE_SHIPPING); // ヘッダ行の出力. $app['eccube.service.csv.export']->exportHeader(); // 受注データ検索用のクエリビルダを取得. $qb = $app['eccube.service.csv.export']->getOrderQueryBuilder($request); // データ行の出力. $app['eccube.service.csv.export']->setExportQueryBuilder($qb); $app['eccube.service.csv.export']->exportData(function ($entity, $csvService) { $Csvs = $csvService->getCsvs(); /** @var $Order \Eccube\Entity\Order */ $Order = $entity; /** @var $Shippings \Eccube\Entity\Shipping[] */ $Shippings = $Order->getShippings(); foreach ($Shippings as $Shipping) { /** @var $ShipmentItems \Eccube\Entity\ShipmentItem */ $ShipmentItems = $Shipping->getShipmentItems(); foreach ($ShipmentItems as $ShipmentItem) { $row = array(); // CSV出力項目と合致するデータを取得. foreach ($Csvs as $Csv) { // 受注データを検索. $data = $csvService->getData($Csv, $Order); if (is_null($data)) { // 配送情報を検索. $data = $csvService->getData($Csv, $Shipping); } if (is_null($data)) { // 配送商品を検索. $data = $csvService->getData($Csv, $ShipmentItem); } $row[] = $data; } //$row[] = number_format(memory_get_usage(true)); // 出力. $csvService->fputcsv($row); } } }); }); $now = new \DateTime(); $filename = 'shipping_' . $now->format('YmdHis') . '.csv'; $response->headers->set('Content-Type', 'application/octet-stream'); $response->headers->set('Content-Disposition', 'attachment; filename=' . $filename); $response->send(); return $response; }
/** * {@inheritdoc} */ public function renderFile(CRUDEntity $entity, $entityName, $field) { $targetPath = $this->getPath($entityName, $entity, $field); $fileName = $entity->get($field); $file = $targetPath . '/' . $fileName; $response = new Response(''); $finfo = finfo_open(FILEINFO_MIME_TYPE); $mimeType = finfo_file($finfo, $file); finfo_close($finfo); $size = filesize($file); if ($fileName && file_exists($file)) { $response = new StreamedResponse(function () use($file) { set_time_limit(0); $handle = fopen($file, "rb"); if ($handle !== false) { $chunkSize = 1024 * 1024; while (!feof($handle)) { $buffer = fread($handle, $chunkSize); echo $buffer; flush(); } fclose($handle); } }, 200, array('Content-Type' => $mimeType, 'Content-Disposition' => 'attachment; filename="' . $fileName . '"', 'Content-length' => $size)); $response->send(); } return $response; }
/** * @EXT\Route( * "/{workspace}/export", * name="claro_workspace_export", * options={"expose"=true} * ) */ public function exportAction(Workspace $workspace) { $archive = $this->container->get('claroline.manager.transfert_manager')->export($workspace); $fileName = $workspace->getCode() . '.zip'; $mimeType = 'application/zip'; $response = new StreamedResponse(); $response->setCallBack(function () use($archive) { readfile($archive); }); $response->headers->set('Content-Transfer-Encoding', 'octet-stream'); $response->headers->set('Content-Type', 'application/force-download'); $response->headers->set('Content-Disposition', 'attachment; filename=' . urlencode($fileName)); $response->headers->set('Content-Length', filesize($archive)); $response->headers->set('Content-Type', $mimeType); $response->headers->set('Connection', 'close'); return $response->send(); }
/** * {@inheritdoc} */ public function renderFile(Entity $entity, $entityName, $field) { $targetPath = $this->getPath($entityName, $entity, $field); $fileName = $entity->get($field); $file = $targetPath . '/' . $fileName; $response = new Response(''); $mimeTypes = new MimeTypes(); $mimeType = $mimeTypes->getMimeType($file); $size = filesize($file); if ($fileName && file_exists($file)) { $streamedFileResponse = new StreamedFileResponse(); $response = new StreamedResponse($streamedFileResponse->getStreamedFileFunction($file), 200, ['Content-Type' => $mimeType, 'Content-Disposition' => 'attachment; filename="' . $fileName . '"', 'Content-length' => $size]); $response->send(); } return $response; }
public function downloadCsv(array $data, $reportName = 'reporte') { $response = new StreamedResponse(); $contentDisposition = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $reportName . '.csv'); $response->headers->set('Content-Disposition', $contentDisposition); $response->headers->set('Content-Type', 'text/csv; charset=utf-8'); $response->setCallback(function () use($data) { $exporter = $this->get('intriro_csv.exporter.default'); $exporter->export('php://output', $data); }); $response->send(); return $response; }
/** * The controller for serving static files. * * @param Application $app * the Silex application * * @return Response * redirects to the instance details page or 404 on invalid input */ public function staticFile(Application $app) { $fileParam = $app['request']->get('file'); if (!$fileParam) { return $this->getNotFoundPage($app, $app['translator']->trans('crudlex.resourceNotFound')); } $file = __DIR__ . '/../static/' . $fileParam; if (!file_exists($file)) { return $this->getNotFoundPage($app, $app['translator']->trans('crudlex.resourceNotFound')); } $extension = pathinfo($file, PATHINFO_EXTENSION); $mimeType = ''; if (strtolower($extension) === 'css') { $mimeType = 'text/css'; } else { $finfo = finfo_open(FILEINFO_MIME_TYPE); $mimeType = finfo_file($finfo, $file); finfo_close($finfo); } $size = filesize($file); $response = new StreamedResponse(function () use($file) { set_time_limit(0); $handle = fopen($file, "rb"); if ($handle !== false) { $chunkSize = 1024 * 1024; while (!feof($handle)) { $buffer = fread($handle, $chunkSize); echo $buffer; flush(); } fclose($handle); } }, 200, array('Content-Type' => $mimeType, 'Content-Disposition' => 'attachment; filename="' . basename($file) . '"', 'Content-length' => $size)); $response->send(); return $response; }
/** * 商品CSVの出力. * * @param Application $app * @param Request $request * @return StreamedResponse */ public function export(Application $app, Request $request) { // タイムアウトを無効にする. set_time_limit(0); // sql loggerを無効にする. $em = $app['orm.em']; $em->getConfiguration()->setSQLLogger(null); $response = new StreamedResponse(); $response->setCallback(function () use($app, $request) { // CSV種別を元に初期化. $app['eccube.service.csv.export']->initCsvType(CsvType::CSV_TYPE_CATEGORY); // ヘッダ行の出力. $app['eccube.service.csv.export']->exportHeader(); $qb = $app['eccube.repository.category']->createQueryBuilder('c')->orderBy('c.rank', 'DESC'); // データ行の出力. $app['eccube.service.csv.export']->setExportQueryBuilder($qb); $app['eccube.service.csv.export']->exportData(function ($entity, $csvService) { $Csvs = $csvService->getCsvs(); /** @var $Category \Eccube\Entity\Category */ $Category = $entity; // CSV出力項目と合致するデータを取得. $row = array(); foreach ($Csvs as $Csv) { $row[] = $csvService->getData($Csv, $Category); } //$row[] = number_format(memory_get_usage(true)); // 出力. $csvService->fputcsv($row); }); }); $now = new \DateTime(); $filename = 'category_' . $now->format('YmdHis') . '.csv'; $response->headers->set('Content-Type', 'application/octet-stream'); $response->headers->set('Content-Disposition', 'attachment; filename=' . $filename); $response->send(); return $response; }
public function concatenationWithVideosAction($id) { $em = $this->getEm(); $bumper = $em->getRepository('AppBundle:Bumper')->find($id); $response = new StreamedResponse(); $category = $bumper->getCategory(); $response->setCallback(function () use($bumper, $category, $em) { echo $this->renderView('Backend/Bumper/concatenation.html.twig'); $this->get('app.concat_videos')->concatenate($bumper, $bumper->getCategory()); }); return $response->send(); }
/** * @Route( * "/{gridName}/export/", * name="oro_datagrid_export_action", * requirements={"gridName"="[\w\:-]+"} * ) * * @param string $gridName * * @return Response */ public function exportAction($gridName) { // Export time execution depends on a size of data ignore_user_abort(false); set_time_limit(0); $request = $this->getRequest(); $format = $request->query->get('format'); $parametersFactory = $this->get('oro_datagrid.datagrid.request_parameters_factory'); $parameters = $parametersFactory->createParameters($gridName); $context = new ExportContext(array('gridName' => $gridName, 'gridParameters' => $parameters)); // prepare export executor $executor = new StepExecutor(); $executor->setBatchSize(self::EXPORT_BATCH_SIZE); $executor->setReader($this->get('oro_datagrid.importexport.export_connector'))->setProcessor($this->get('oro_datagrid.importexport.processor.export'))->setWriter($this->get(sprintf('oro_importexport.writer.echo.%s', $format))); foreach ([$executor->getReader(), $executor->getProcessor(), $executor->getWriter()] as $element) { if ($element instanceof ContextAwareInterface) { $element->setImportExportContext($context); } } /** @var MimeTypeGuesser $mimeTypeGuesser */ $mimeTypeGuesser = $this->get('oro_importexport.file.mime_type_guesser'); $contentType = $mimeTypeGuesser->guessByFileExtension($format); if (!$contentType) { $contentType = 'application/octet-stream'; } // prepare response $response = new StreamedResponse($this->exportCallback($context, $executor)); $response->headers->set('Content-Type', $contentType); $response->headers->set('Content-Transfer-Encoding', 'binary'); $outputFileName = sprintf('datagrid_%s_%s.%s', str_replace('-', '_', $gridName), date('Y_m_d_H_i_s'), $format); $response->headers->set('Content-Disposition', $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $outputFileName)); return $response->send(); }
/** * 会員CSVの出力. * @param Application $app * @param Request $request * @return StreamedResponse */ public function export(Application $app, Request $request) { // タイムアウトを無効にする. set_time_limit(0); // sql loggerを無効にする. $em = $app['orm.em']; $em->getConfiguration()->setSQLLogger(null); $response = new StreamedResponse(); $response->setCallback(function () use($app, $request) { // CSV種別を元に初期化. $app['eccube.service.csv.export']->initCsvType(CsvType::CSV_TYPE_CUSTOMER); // ヘッダ行の出力. $app['eccube.service.csv.export']->exportHeader(); // 会員データ検索用のクエリビルダを取得. $qb = $app['eccube.service.csv.export']->getCustomerQueryBuilder($request); // データ行の出力. $app['eccube.service.csv.export']->setExportQueryBuilder($qb); $app['eccube.service.csv.export']->exportData(function ($entity, $csvService) { $Csvs = $csvService->getCsvs(); /** @var $Customer \Eccube\Entity\Customer */ $Customer = $entity; $row = array(); // CSV出力項目と合致するデータを取得. foreach ($Csvs as $Csv) { // 会員データを検索. $row[] = $csvService->getData($Csv, $Customer); } //$row[] = number_format(memory_get_usage(true)); // 出力. $csvService->fputcsv($row); }); }); $now = new \DateTime(); $filename = 'customer_' . $now->format('YmdHis') . '.csv'; $response->headers->set('Content-Type', 'application/octet-stream'); $response->headers->set('Content-Disposition', 'attachment; filename=' . $filename); $response->send(); log_info("会員CSVファイル名", array($filename)); return $response; }
/** * @param int $idPool * * @return \Symfony\Component\HttpFoundation\Response */ protected function generateCsvFromVouchers($idPool) { $generatedVouchers = $this->getQueryContainer()->queryVouchersByIdVoucherPool($idPool)->find(); $streamedResponse = new StreamedResponse(); $streamedResponse->setCallback(function () use($generatedVouchers) { $csvHandle = fopen('php://output', 'w+'); fputcsv($csvHandle, ['Voucher Code']); foreach ($generatedVouchers as $voucher) { fputcsv($csvHandle, [$voucher->getCode()]); } fclose($csvHandle); }); $streamedResponse->setStatusCode(Response::HTTP_OK); $streamedResponse->headers->set('Content-Type', 'text/csv; charset=utf-8'); $streamedResponse->headers->set('Content-Disposition', 'attachment; filename="' . self::CSV_FILENAME . '"'); return $streamedResponse->send(); }
/** * Draw the Captcha * * @return void */ public function showCaptchaImg() { $this->createBackground(); $this->drawlines(); $this->generateCaptchaCode($this->caplength); $this->drawText(); $response = new StreamedResponse(); $img = $this->img; if (function_exists('imagejpeg')) { $response->headers->set('Content-Type', 'image/jpeg'); $quality = (int) $this->quality; $response->setCallback(function () use($img, $quality) { imagejpeg($img, null, $quality); }); } elseif (function_exists('imagegif')) { $response->headers->set('Content-Type', 'image/gif'); $response->setCallback(function () use($img) { imagegif($img); }); } $response->send(); imagedestroy($this->img); }
/** * 商品CSVの出力. * * @param Application $app * @param Request $request * @param string $type * * @return StreamedResponse */ public function export(Application $app, Request $request, $type) { set_time_limit(0); $response = new StreamedResponse(); $session = $request->getSession(); if ($session->has('eccube.admin.plugin.sales_report.export')) { $searchData = $session->get('eccube.admin.plugin.sales_report.export'); } else { $searchData = array(); } $data = array('graph' => null, 'raw' => null); // Query data from database if ($searchData) { if ($searchData['term_end']) { $searchData['term_end'] = $searchData['term_end']->modify('- 1 day'); } $data = $app['salesreport.service.sales_report']->setReportType($type)->setTerm($searchData['term_type'], $searchData)->getData(); } $response->setCallback(function () use($data, $app, $request, $type) { //export data by type switch ($type) { case 'term': $app['salesreport.service.sales_report']->exportTermCsv($data['raw'], $app['config']['csv_export_separator'], $app['config']['csv_export_encoding']); break; case 'product': $app['salesreport.service.sales_report']->exportProductCsv($data['raw'], $app['config']['csv_export_separator'], $app['config']['csv_export_encoding']); break; case 'age': $app['salesreport.service.sales_report']->exportAgeCsv($data['raw'], $app['config']['csv_export_separator'], $app['config']['csv_export_encoding']); break; default: $app['salesreport.service.sales_report']->exportTermCsv($data['raw'], $app['config']['csv_export_separator'], $app['config']['csv_export_encoding']); } }); //set filename by type $now = new \DateTime(); switch ($type) { case 'term': $filename = 'salesreport_term_' . $now->format('YmdHis') . '.csv'; break; case 'product': $filename = 'salesreport_product_' . $now->format('YmdHis') . '.csv'; break; case 'age': $filename = 'salesreport_age_' . $now->format('YmdHis') . '.csv'; break; default: $filename = 'salesreport_term_' . $now->format('YmdHis') . '.csv'; } $response->headers->set('Content-Type', 'application/octet-stream;'); $response->headers->set('Content-Disposition', 'attachment; filename=' . $filename); $response->send(); log_info('商品CSV出力ファイル名', array($filename)); return $response; }
public function downloadBlob($container, $blob) { try { $blob_get = $this->azureProxy->getBlob($container, $blob); $response = new StreamedResponse(); $response->setCallback(function () use($blob_get) { fpassthru($blob_get->getContentStream()); }); $content = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $blob); $response->headers->set('Content-Disposition', $content); $response->send(); } catch (ServiceException $e) { $code = $e->getCode(); $error_message = $e->getMessage(); throw new HttpException($code, $error_message); } }
/** * アップロード用CSV雛形ファイルダウンロード */ public function csvTemplate(Application $app, Request $request, $type) { set_time_limit(0); $response = new StreamedResponse(); if ($type == 'product') { $headers = $this->getProductCsvHeader(); $filename = 'product.csv'; } else { if ($type == 'category') { $headers = $this->getCategoryCsvHeader(); $filename = 'category.csv'; } else { throw new NotFoundHttpException(); } } $response->setCallback(function () use($app, $request, $headers) { // ヘッダ行の出力 $row = array(); foreach ($headers as $key => $value) { $row[] = mb_convert_encoding($key, $app['config']['csv_export_encoding'], 'UTF-8'); } $fp = fopen('php://output', 'w'); fputcsv($fp, $row, $app['config']['csv_export_separator']); fclose($fp); }); $response->headers->set('Content-Type', 'application/octet-stream'); $response->headers->set('Content-Disposition', 'attachment; filename=' . $filename); $response->send(); return $response; }
/** * @EXT\Route( * "/download", * name="claro_resource_download", * options={"expose"=true}, * defaults ={"forceArchive"=false} * ) * @EXT\Route( * "/download/{forceArchive}", * name="claro_resource_download", * options={"expose"=true}, * requirements={"forceArchive" = "^(true|false|0|1)$"}, * ) * @EXT\ParamConverter( * "nodes", * class="ClarolineCoreBundle:Resource\ResourceNode", * options={"multipleIds" = true} * ) * * This function takes an array of parameters. Theses parameters are the ids * of the resources which are going to be downloaded * (query string: "ids[]=1&ids[]=2" ...). * * @param array $nodes * * @param bool $forceArchive * @return \Symfony\Component\HttpFoundation\Response */ public function downloadAction(array $nodes, $forceArchive = false) { $collection = new ResourceCollection($nodes); $this->checkAccess('EXPORT', $collection); $data = $this->resourceManager->download($nodes, $forceArchive); $file = $data['file']; $fileName = $data['name']; $mimeType = $data['mimeType']; $response = new StreamedResponse(); $file = $data['file'] ?: tempnam('tmp', 'tmp'); $response->setCallBack(function () use($file) { readfile($file); }); $response->headers->set('Content-Transfer-Encoding', 'octet-stream'); $response->headers->set('Content-Type', 'application/force-download'); $response->headers->set('Content-Disposition', 'attachment; filename=' . urlencode($fileName)); $response->headers->set('Content-Type', $mimeType); $response->headers->set('Connection', 'close'); $response->send(); return new Response(); }
/** * Handles response for csv-request. * * @param ViewHandler $handler * @param View $view * @param Request $request * @param string $format * * @return Response * * @throws ObjectNotSupportedException */ public function createResponse(ViewHandler $handler, View $view, Request $request, $format) { if (!$view->getData() instanceof ListRepresentation) { throw new ObjectNotSupportedException($view); } $viewData = $view->getData(); $data = new CallbackCollection($viewData->getData(), [$this, 'prepareData']); $fileName = sprintf('%s.csv', $viewData->getRel()); $config = new ExporterConfig(); $exporter = new Exporter($config); $data->rewind(); if ($row = $data->current()) { $config->setColumnHeaders(array_keys($row)); } $config->setDelimiter($this->convertValue($request->get('delimiter', ';'), self::$delimiterMap)); $config->setNewline($this->convertValue($request->get('newLine', '\\n'), self::$newLineMap)); $config->setEnclosure($request->get('enclosure', '"')); $config->setEscape($request->get('escape', '\\')); $response = new StreamedResponse(); $disposition = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $fileName, $fileName); $response->headers->set('Content-Type', 'text/csv'); $response->headers->set('Content-Disposition', $disposition); $response->setCallback(function () use($data, $exporter) { $exporter->export('php://output', $data); }); $response->send(); return $response; }
/** * @EXT\Route( * "/courses/export", * name="claro_cursus_courses_export", * options={"expose"=true} * ) * @EXT\ParamConverter("authenticatedUser", options={"authenticatedUser" = true}) */ public function coursesExportAction() { $courses = $this->cursusManager->getAllCourses('', 'id', 'ASC', false); $zipName = 'courses.zip'; $mimeType = 'application/zip'; $file = $this->cursusManager->zipDatas($courses, 'course'); $response = new StreamedResponse(); $response->setCallBack(function () use($file) { readfile($file); }); $response->headers->set('Content-Transfer-Encoding', 'octet-stream'); $response->headers->set('Content-Type', 'application/force-download'); $response->headers->set('Content-Disposition', 'attachment; filename=' . urlencode($zipName)); $response->headers->set('Content-Type', $mimeType); $response->headers->set('Connection', 'close'); $response->send(); return new Response(); }