如何使用调用API从PHP下载文件?

时间:2019-01-29 11:02:43

标签: reactjs api symfony

我需要从Symfony中的目录下载文件。问题是,通过身份验证后,我需要下载此文件。

为此,我创建了一个具有ID(id文件)的终结点(GET方法),并且我从React应用程序中进行了调用,并在Header中传递了授权承载。

问题是,该文件不是直接下载的,但是如果我从Chrome输入DevTools,我会在响应中看到该文件存在,但没有下载。

这是PHP代码:

$file = new File($fullPath);

return $this->file($file);

我如何下载文件?

1 个答案:

答案 0 :(得分:1)

这是我的示例代码:

/**
 * @param Product $product
 * @param TranslatorInterface $translator
 *
 * @SWG\Response(
 *     response=200,
 *     description="Get allergensheet of a product",
 * )
 * @SWG\Tag(name="Product")
 *
 * @Route("/allergensheet/{id}", methods="GET")
 *
 * @Security(name="Bearer")
 * @return Mixed
 */
public function downloadAllergenSheet(Product $product, TranslatorInterface $translator) {

    $allergens = $product->getAllergens();

    if($allergens instanceof Allergens) {

        if($allergens->getHasSheet()) {
            $fs = new Filesystem();

            if($fs->exists($translator->trans($product->getArticleNr() . '_allergensheet'))) {
                return new BinaryFileResponse($translator->trans($product->getArticleNr() . '_allergensheet'));
            }
            else {
                return new JsonResponse(false, Response::HTTP_NO_CONTENT);
            }

        }
        else {
            return new JsonResponse(false, Response::HTTP_NO_CONTENT);
        }

    }
    else {
        return new JsonResponse(false, Response::HTTP_NO_CONTENT);
    }

}

这可能有帮助吗? 这是为了下载包含有关产品的某些信息的PDF文件。