Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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
Javascript 如何上传一组图像_Javascript_C#_Mysql_Reactjs_Api - Fatal编程技术网

Javascript 如何上传一组图像

Javascript 如何上传一组图像,javascript,c#,mysql,reactjs,api,Javascript,C#,Mysql,Reactjs,Api,我有这些选择和上传图像的方法,但我不确定错误在哪里,是在代码中还是在API中 const [imagens, setImagens] = useState([]) function choseImage(event) { imagens.push(URL.createObjectURL(event.target.files[0])) } const upload = () => { const fd = new FormData(); // imag

我有这些选择和上传图像的方法,但我不确定错误在哪里,是在代码中还是在API中

const [imagens, setImagens] = useState([])

  function choseImage(event) {
    imagens.push(URL.createObjectURL(event.target.files[0]))
  }

  const upload = () => {
    const fd = new FormData();
    // imagens is the array of images
    fd.append('imagem', imagens)
    fetch('http://localhost:5000/api/Upload', fd)
      .then(res => {
        console.log(res)
      });
  }
这是UploadController,消息是:
System.NullReferenceException:“对象引用未设置为对象的实例。”
文件为空

    [HttpPost]
    public async Task Post(IFormFile file)
    {
        var nomeArquivo = (file.FileName);
        var uploads = Path.Combine(Directory.GetCurrentDirectory(), "wwwRoot\\Upload", nomeArquivo);

        if (!Directory.Exists(uploads)) Directory.CreateDirectory(uploads);

        if (file.Length > 0)
        {
            using (var fileStream = new FileStream(Path.Combine(uploads, file.FileName), FileMode.Create))
            {
                await file.CopyToAsync(fileStream);
            }
        }
    }

这是我的第一个自由职业者项目,这是我最后缺少的东西,提前感谢你的代码,在下面的代码中注释了一些更改,几乎完成了。在React组件中,可以执行以下操作

export const ImageFileUpload=()=>{
const[images,setImages]=useState([]);
const onFileChange=(文件)=>{
setImages(f=>[…f,…文件]);
};
常量handleClick=(e)=>{
e、 预防默认值();
const formData=new formData();
for(设i=0;iconsole.log(res));
};
返回(
onFileChange(e.target.files)}/>
上传
)
};
您的控制器应该是这样的

[ApiController]
[路线(“[控制器]”)]
公共类FileUploadController:ControllerBase
{
[HttpPost]
//1.参数的名称必须与'formData'的名称匹配`
//2.此方法应采用`列表'`
公共异步任务上载(列表图像)
{
foreach(图像中的var图像)
{
var nomeArquivo=(image.FileName);
var uploads=Path.Combine(Directory.GetCurrentDirectory(),“wwwRoot\\Upload\\”,nomeArquivo);
如果(!Directory.Exists(uploads))Directory.CreateDirectory(uploads);
使用(var fileStream=newfilestream(Path.Combine(uploads,image.FileName),FileMode.Create))
{
等待image.CopyToAsync(文件流);
}
}
}
}

您的代码几乎完成了,下面的代码中注释了几处更改。在React组件中,可以执行以下操作

export const ImageFileUpload=()=>{
const[images,setImages]=useState([]);
const onFileChange=(文件)=>{
setImages(f=>[…f,…文件]);
};
常量handleClick=(e)=>{
e、 预防默认值();
const formData=new formData();
for(设i=0;iconsole.log(res));
};
返回(
onFileChange(e.target.files)}/>
上传
)
};
您的控制器应该是这样的

[ApiController]
[路线(“[控制器]”)]
公共类FileUploadController:ControllerBase
{
[HttpPost]
//1.参数的名称必须与'formData'的名称匹配`
//2.此方法应采用`列表'`
公共异步任务上载(列表图像)
{
foreach(图像中的var图像)
{
var nomeArquivo=(image.FileName);
var uploads=Path.Combine(Directory.GetCurrentDirectory(),“wwwRoot\\Upload\\”,nomeArquivo);
如果(!Directory.Exists(uploads))Directory.CreateDirectory(uploads);
使用(var fileStream=newfilestream(Path.Combine(uploads,image.FileName),FileMode.Create))
{
等待image.CopyToAsync(文件流);
}
}
}
}

您能指出抛出错误的行号吗?mmushtaq在这一行:var nomeArquivo=(file.FileName);你能指出它抛出错误的行号吗?mmushtaq在这一行:var nomeArquivo=(file.FileName);伙计们,你救了我,真的吗thanks@GabrielOliveiraMenezes你能帮我把答案标出来,然后再投票吗?埃德蒙,你救了我,真的thanks@GabrielOliveiraMenezes如果答案有帮助的话,请你标出并投上一票好吗