Reactjs React在服务器上存储图像的最佳做法

Reactjs React在服务器上存储图像的最佳做法,reactjs,database,image,file,flask,Reactjs,Database,Image,File,Flask,嘿,我正在使用react和flask后端,我正在尝试创建一个表单,在这个表单中,用户可以上传应该发送到后端并存储在数据库中的图像。 所以这是我的方法,但我不确定哪种格式最适合存储在数据库中。 FormData是一个好的解决方案吗 // updates thumbnail in state when new file is selected handleFileSelect = (event) => { this.setState({ thumbnail: even

嘿,我正在使用react和flask后端,我正在尝试创建一个表单,在这个表单中,用户可以上传应该发送到后端并存储在数据库中的图像。 所以这是我的方法,但我不确定哪种格式最适合存储在数据库中。 FormData是一个好的解决方案吗

 // updates thumbnail in state when new file is selected
  handleFileSelect = (event) => {
    this.setState({
      thumbnail: event.target.files[0],
    });
  };

  // File Upload
  handleFileUpload = (event) => {
    const fd = new FormData();
    fd.append("image", this.state.thumbnail, this.state.thumbnail);
    axios.post("url", fd).then((res) => {
      console.log(res);
    });
  };

如果您使用的是
axios
,那么我建议您使用一个组件来执行文件上传功能,该组件使用
onChange
来监听
事件.target.files
和输入类型
文件
。甚至可以通过html属性
accept
添加接受的类型

您可以使用
FileReader
,允许您读取存储在用户计算机上的文件内容(异步)。将其作为一个单独的函数使用,可以使用
FileReader
方法提取Base64

获取表单数据:

const formData = new FormData();
formData.append('file', file);
const progressPercentage = Math.round(progressEvent.loaded / progressEvent.total * 100);
那么您的
axios
看起来就像这样

axios({
    method: 'post',
    headers: {
        'Content-Type': 'multipart/form-data',
    },
    data: dataForm,
    url: 'urlhere',
    onUploadProgress: (ev: ProgressEvent) => {
        //Uploading progress functionality here....
    },
})
.then((resp) => {
    fetchBase64(file, (uri: string) => {
        //maybe set a useState here for the Image URI or upload status.
    });
})
.catch((err) => console.error(err));
进度功能:

const formData = new FormData();
formData.append('file', file);
const progressPercentage = Math.round(progressEvent.loaded / progressEvent.total * 100);

如果您使用的是
axios
,那么我建议您使用一个组件来执行文件上传功能,该组件使用
onChange
来监听
事件.target.files
和输入类型
文件
。甚至可以通过html属性
accept
添加接受的类型

您可以使用
FileReader
,允许您读取存储在用户计算机上的文件内容(异步)。将其作为一个单独的函数使用,可以使用
FileReader
方法提取Base64

获取表单数据:

const formData = new FormData();
formData.append('file', file);
const progressPercentage = Math.round(progressEvent.loaded / progressEvent.total * 100);
那么您的
axios
看起来就像这样

axios({
    method: 'post',
    headers: {
        'Content-Type': 'multipart/form-data',
    },
    data: dataForm,
    url: 'urlhere',
    onUploadProgress: (ev: ProgressEvent) => {
        //Uploading progress functionality here....
    },
})
.then((resp) => {
    fetchBase64(file, (uri: string) => {
        //maybe set a useState here for the Image URI or upload status.
    });
})
.catch((err) => console.error(err));
进度功能:

const formData = new FormData();
formData.append('file', file);
const progressPercentage = Math.round(progressEvent.loaded / progressEvent.total * 100);