微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 FormData 从 React 应用程序上传 Sailsjs 文件不起作用

如何解决使用 FormData 从 React 应用程序上传 Sailsjs 文件不起作用

我的 React 文件上传代码

   let formData = new FormData()
            console.log(values);
            
            await formData.append('profile_picture[]',values.profile_picture.rawFile,values.profile_picture)
            await formData.append('email_address',values.email_address)
            await formData.append('full_name',values.full_name)
            await formData.append('password',values.password)
            await formData.append('confirm_password',values.confirm_password)
            // console.log(formData);
            
            await fetch('http://localhost:1337/api/moderators',{
                body:formData,method:'POST',credentials:'include'
            })

我的 Sailjs 控制器

const { StatusCodes } = require("http-status-codes");

module.exports = {


  friendlyName: 'Create moderator',description: 'Functon used to create a Moderator',files: ["profile_picture"],inputs: {
    email_address: {
      type: "string",description: "The email address foser.",required: true,unique: true,isEmail: true,maxLength: 200,example: "carol.reyna@microsoft.com",},password: {
      type: "string",description: "Password of the User",protect: true,confirm_password: {
      type: "string",full_name: {
      type: "string",description: "Full representation of the user's name",maxLength: 120,example: "Lisa Microwave van der Jenny",profile_picture: {
      type: "ref",required: false,description: "File Data",exits: {
    invalid: {
      responseType: "badRequest",description:
        "The provided fullName,password and/or email address are invalid.",extendedDescription:
        "If this request was sent from a graphical user interface,the request " +
        "parameters should have been validated/coerced _before_ they were sent.",emailAlreadyInUse: {
      statusCode: StatusCodes.CONFLICT,description: "The provided email address is already in use.",noFileAttached: {
      description: "No file was attached.",responseType: "badRequest",tooBig: {
      description: "The file is too big.",fn: async function (inputs) {
    // let { profile_picture } = inputs;

    console.log(this.req.file('profile_picture'))
    await this.req.file('profile_picture').upload(
      {
        dirname: require("path").resolve(
          sails.config.appPath,"assets/images/uploads/test"
        ),maxBytes: 3000000,async (err,result) => {
        console.log(err,result)
      }
    );
    return;

  }


};

如果我从控制器中删除输入,它可以正常工作

this.req.file('profile_picture').upload()..

但我无法通过使用输入 {}

使用sailsjs 提供的自动验证

我希望能够使用输入,同时希望使用

上传图像
inputs.profile_picture.upload()...

当我使用 ejs 表单时,代码工作得很好,但在 React 中却没有,它迫使我删除输入验证。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。