Javascript 如何上传一组图像
我有这些选择和上传图像的方法,但我不确定错误在哪里,是在代码中还是在API中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
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如果答案有帮助的话,请你标出并投上一票好吗