Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php从react、axios和dropzone前端保存文件?_Php_Reactjs_Axios_Dropzone - Fatal编程技术网

如何使用php从react、axios和dropzone前端保存文件?

如何使用php从react、axios和dropzone前端保存文件?,php,reactjs,axios,dropzone,Php,Reactjs,Axios,Dropzone,我试图上传一个带有react、axios和dropzone前端的图像,我有一个php后端。我在尝试上载文件时不断遇到错误。我不确定这是前端问题还是后端php问题。我不是php方面的专家,但我正在努力学习 我的反应码 import React, {Fragment} from 'react'; import Dropzone from 'react-dropzone'; import axios from 'axios'; class ContentForm extends React.Comp

我试图上传一个带有react、axios和dropzone前端的图像,我有一个php后端。我在尝试上载文件时不断遇到错误。我不确定这是前端问题还是后端php问题。我不是php方面的专家,但我正在努力学习

我的反应码

import React, {Fragment} from 'react';
import Dropzone from 'react-dropzone';
import axios from 'axios';

class ContentForm extends React.Component {
  constructor(props) {
    super(props);
    this.state = { 
      username: '',
      email: '',
      isChecked: false 
    };
  }

  myChangeHandler = (event) => {
    this.setState({
      username: event.target.value
    });
  }

  myChangeHandlerEmail = (event) => {
    this.setState({
      email: event.target.value
    });
  }

  toggleChange = (event) => {
    this.setState({
      isChecked: !this.state.isChecked
    });
  }

  handleSubmit = event => {
    event.preventDefault();

    if(this.state.isChecked){


      bodyFormData.append('FullName', this.state.username); 
      bodyFormData.append('email', this.state.email);
      bodyFormData.append("image", this.state.image);


      axios({
        method: 'post',
        url: 'PHP-CODE-URL',
        data: bodyFormData,
        headers: {'Content-Type': 'multipart/form-data' }
        })
        .then(function (response) {
            //handle success
            console.log(response);
        })
        .catch(function (response) {
            //handle error
            console.log(response);
      });
      }
  }


  render() {
    return (
        <Fragment>
          <div className="contentForm__contaner">
            <form className="contentForm__form" onSubmit={this.handleSubmit}>
                <div className="contentForm__fullName flexRWSBFS">
                  <p className="contentForm__label">Full Name*:</p>
                  <input className="contentForm__input" type='text' name='fullName' placeholder="Full Name*" onChange={this.myChangeHandler} />
                </div>
                <div className="contentForm__emailAddress flexRWSBFS">
                  <p className="contentForm__label">Email Address*:</p>
                  <input className="contentForm__input" type='text' name='emailAdd' placeholder="Email Address*" onChange={this.myChangeHandlerEmail} />
                </div>

                <Dropzone 
                  onDrop={accepted => {
                    this.setState({ 
                      "image": accepted });
                  }}>
                  {({getRootProps, getInputProps, isDragActive, isDragReject}) => (
                    <section className="contentForm__section item4">
                      <div {...getRootProps()}>
                        <h3>Image</h3>
                        <input {...getInputProps()}/>
                        <p className={`dropZone__p item2 ${isDragActive && !isDragReject ? "activeDrop" : ""}`}>
                          {`${this.state.image ? `Image "${this.state.image.map((item,i) => item.name)}" is uploaded`  : "Drag and drop your files here, or click to select files"}`}
                        </p>
                      </div>
                    </section>
                  )}
                </Dropzone>
                <section className="contentForm__section item5 flexCWCC">
                  <label className="item5__label">
                    <input
                      type="checkbox"
                      checked={this.state.isChecked}
                      onChange={this.toggleChange} />
                    I agree that I have submitted the necessary documents needed for this image legally.
                  </label>
                  <button className="item5__button">Submit</button>
                </section>
            </form>
          </div>
      </Fragment>
      )
    }
  }
export default ContentForm;
import React,{Fragment}来自'React';
从“react Dropzone”导入Dropzone;
从“axios”导入axios;
类ContentForm扩展了React.Component{
建造师(道具){
超级(道具);
this.state={
用户名:“”,
电子邮件:“”,
被检查:错误
};
}
myChangeHandler=(事件)=>{
这是我的国家({
用户名:event.target.value
});
}
myChangeHandlerEmail=(事件)=>{
这是我的国家({
电子邮件:event.target.value
});
}
toggleChange=(事件)=>{
这是我的国家({
已检查:!this.state.isChecked
});
}
handleSubmit=事件=>{
event.preventDefault();
if(this.state.isChecked){
bodyFormData.append('FullName',this.state.username);
bodyFormData.append('email',this.state.email);
bodyFormData.append(“image”,this.state.image);
axios({
方法:“post”,
url:'PHP-CODE-url',
数据:bodyFormData,
标题:{'Content-Type':'multipart/form data'}
})
.然后(功能(响应){
//成功
控制台日志(响应);
})
.catch(函数(响应){
//处理错误
控制台日志(响应);
});
}
}
render(){
返回(
全名*:

电子邮件地址*:

{ 这个.setState({ “图像”:已接受}); }}> {({getRootProps,getInputProps,isDragActive,isDragReject})=>( 形象

{${this.state.image?`image“${this.state.image.map((项目,i)=>item.name)}”已上载:`:“将文件拖放到此处,或单击以选择文件”}`}

)} 我同意我已经合法地提交了此图像所需的必要文件。 提交 ) } } 导出默认内容格式;
我的Php代码,我只是想测试它是否正在保存文件

<?php

$uploaddir = dirname(__FILE__).'/' . 'uploaded/';
$uploadfile = $uploaddir . basename( $_FILES['image']['name']);

if(move_uploaded_file($_FILES['image']['tmp_name'], $uploaddir))
{
  echo "The file has been uploaded successfully";
}
else
{
  echo "There was an error uploading the file";
}

?>

看看PHP代码,在
move\u uploaded\u file
函数中,您在第二个参数中包含了一个路径,但我相信您还需要在路径中包含完整的文件名

根据文件:

此函数检查以确保文件名指定的文件是有效的上载文件(意味着它是通过PHP的HTTP POST上载机制上载的)。如果文件有效,它将被移动到目标指定的文件名

所以,在你的情况下,我会改变这一行:

move_uploaded_file($_FILES['image']['tmp_name'], $uploaddir)
为此:

move_uploaded_file($_FILES['image']['tmp_name'], $uploadfile)

在PHP-中打开错误报告。然后,把你的错误发回来。