Невозможно получить файл изображения с помощью выборки в PHP - PullRequest
0 голосов
/ 04 августа 2020

У нас есть виджет, созданный с использованием React, который использует следующий код для отправки данных формы из пользовательского ввода на другой сервер:

let resp  = await fetch(url , {
            method: 'post',
            body: formData
        })

formdata отправляется в файл PHP, который захватывает информацию и сохраняет ее в таблице данных и отправляет электронное письмо с информацией в нашу службу поддержки. Я использовал приведенный ниже код, чтобы убедиться, что я получаю информацию на сервере:

$input = file_get_contents('php://input');
  error_log($input);

, и я мог видеть это в журнале ошибок:

    ------WebKitFormBoundaryiUhA3VJVz1oW5MyG
Content-Disposition: form-data; name="Location"

testing
------WebKitFormBoundaryiUhA3VJVz1oW5MyG
Content-Disposition: form-data; name="Comments"

gxmzxfhmfzm
------WebKitFormBoundaryiUhA3VJVz1oW5MyG
Content-Disposition: form-data; name="Assist"

I think I found an error
------WebKitFormBoundaryiUhA3VJVz1oW5MyG
Content-Disposition: form-data; name="Image"

[object File]...(etc)

Я смог вычислить как получить все строковые объекты, но я не могу схватить [object File], который должен быть изображением. Мой $_FILES - пустой массив.

Мои php .ini настройки следующие:

file_uploads = On
post_max_size = 2M
upload_max_filesize = 2M

Размер изображения всего 33 КБ.

Как мне получить доступ к этому файлу изображения для сохранения / отправки по электронной почте?

РЕДАКТИРОВАТЬ: Вот код формы в соответствии с запросом.

<form className="flex-column form" encType="multipart/form-data">
            <Input
                label="Location"
                name="Location"
                type="text"
                register={register}
                error={errors["Location"]}
                placeholder="Home, Library, Starbucks, office, etc."
            />
            <Textarea
                label="Comments"
                name="Comments"
                error={errors["Comments"]}
                placeholder="Please be specific. Include the error code message if applicable. The more details, the better."
                register={register({required: `Comments are required`})}
            />
            <Select
                name="Assist"
                label="How can we assist you?"
                options={selectOptions}
                register={register}
                error={errors["Assist"]}
            />
            <ImageInput
                label="Load the file"
                name="Image"
                register={register}
                images={watch('Image')}
                accept="image/png, image/jpg, image/jpeg, image/gif"
                onChange={handleFileLoad}
                error={errors["Image"]}
            />
            <Button
                onClick={handleSubmit(submitForm)}
                classes="button button-black"
                label="Submit"
            />
        </form>

1 Ответ

0 голосов
/ 06 августа 2020

Я разобрался. Похоже, что когда форма была отправлена, файл помещался как часть массива $ _POST и преобразовывался в просто строку. Если все сделано правильно, никакая информация о файле не должна отображаться в массиве $ _POST, только массив $ _FILE.

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