Symfony загрузка файла не работает в Firefox, но в Chrome - PullRequest
0 голосов
/ 30 марта 2020

Я работаю над проектом symfony для загрузки тезисов докладов. Я не новичок в php, и я помню, что у меня была похожая проблема на обычном php. Но я не совсем помню, как я это решил. Я пытаюсь загрузить PDF, но при отправке сервер (symfony build in server) прекращает принимать запросы, и мой единственный вариант - остановить сервер. Firefox показывает, что было передано ~ 700B (варьируется ???), но сервер не дал ответа. Однако через некоторое время я попробовал форму в Google Chrome и был очень удивлен, когда она отлично работала. При выключении symfony сервер иногда показывает сообщение об ошибке (есть немецкие части):

shut down, bye! with server callback Mar 30 17:57:25 |eRRORe VER issue with server callback
1merrore"unable to fetch the response from the backend: read tcp 127.0.0.1:53834->127.0.0.1:53811:    wsarecv: 
 Eine vorhandene Verbndene Verbindung werbindung w Verbindung wurde vom ng wurde vom 
 RemS9m="unable to fetch the res  S9m="unable to fetch the response from the backend: read tcp  
 127.0.0.1:53834->127.0.0.1:53811: wsarecv: Eine vorhandene Verbndene 
Verbindung werbindung w Verbindung wurde vom ng wurde vom Remindung w Verbindung wurde vom RMar 30 
17:57:25 |Mar 30 17:57:25 |S1mERRORE VERET (502)

Возможно, потому что загрузка все равно работает, но в chrome загрузка заняла менее секунды ( 10KB) и не было проблем.

Мой код для формы Symfony:

    public const paperFileFormID = "paperFile";
    public const signatureFileFormID = "signatureFile";

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add(self::paperFileFormID, FileType::class, [
                'label' => "Upload Paper (PDF File)",
                'mapped' => false,
                'constraints' =>
                [
                    new File([
                        'maxSize' => '30000k',
                        'mimeTypes' => [
                            'application/pdf',
                            'application/x-pdf'
                        ],
                        'mimeTypesMessage' => 'please upload a valid PDF document'
                    ])
                ],
            ])->add(self::signatureFileFormID, FileType::class, [
                'label' => "Upload Paper (PDF File)",
                'mapped' => false,
                'constraints' =>
                    [
                        new File([
                            'maxSize' => '2048k',
                            'mimeTypes' => [
                                'application/pdf',
                                'application/x-pdf'
                            ],
                            'mimeTypesMessage' => 'please upload a valid PDF document'
                        ])
                    ],
            ])
            ->add('title', TextType::class, [
                'attr' => [
                    'placeholder' => "title"
                ]
            ])
            ->add('coauthorEmails', TextType::class, [
                'label' => 'coauthor email adresses',
                'required' => false
            ])
            ->add('upload', SubmitType::class);
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => PaperAbstract::class
         ]);
    }

И контроллер :

        public function uploadAbstract(Request $request, SluggerInterface $slugger){
            $paperAbstract = new PaperAbstract();
            $form = $this->createForm(AbstractUploadType::class, $paperAbstract);
            $form->handleRequest($request);
            if($form->isSubmitted() && $form->isValid()){

                $paperAbstractData = $form->get(AbstractUploadType::paperFileFormID)->getData();
                $signatureData     = $form->get(AbstractUploadType::signatureFileFormID)->getData();

                $originalAbstractFileName = pathinfo($paperAbstractData->getOriginalName(), PATHINFO_FILENAME);
                $originalSignatureFileName = pathinfo($signatureData->getOriginalName(),PATHINFO_FILENAME);

                $safeFilename = $slugger->slug($originalAbstractFileName);
                $newFilename = $safeFilename.'-'.uniqid().'.'.$paperAbstractData->guessExtension();
                $safeFilename = $slugger->slug($originalSignatureFileName);
                $newFilename = $safeFilename.'-'.uniqid().'.'.$signatureData->guessExtension();
                $signatureData->move(
                    $this->getParameter('paperDirectory'),
                    $newFilename
                );

                return new Response("test");

            }

            return $this->render('/full_template/abstract_upload.html.twig', ['form' => $form->createView()]);
        }

Это еще не готово, только для целей тестирования. Я работаю над windows и использую исполняемый файл xampp php для встроенного сервера.

У кого-нибудь есть идеи, как это исправить или в чем проблема? Я на самом деле на идеи ...

1 Ответ

0 голосов
/ 15 апреля 2020

Я решил проблему ... Это был OneDrive. Я попытался загрузить файл из папки OneDrive, но он не был синхронизирован, пока OneDrive был деактивирован. Так что время соединения истекло. В chrome при тестировании повезло, что один файл был синхронизирован из каталога, где я его использовал ... Так что довольно глупая ошибка ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...