У нас есть виджет, созданный с использованием 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>