反应,渲染名称中带有空格的图像的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反应,渲染名称中带有空格的图像的问题相关的知识,希望对你有一定的参考价值。
我的React-Express应用程序有问题,名称中带有空格的图像未在应用程序中呈现,但路径正确。名称中没有空格的图像效果很好。路径正确,可在浏览器中使用,因为%替换了空格。
const FileUpload = () =>
const [file, setFile] = useState('');
const [filename, setFilename] = useState('Choose File');
const [uploadedFile, setUploadedFile] = useState();
const [message, setMessage] = useState('');
const [uploadPercentage, setUploadPercentage] = useState(0);
const onChange = e =>
setFile(e.target.files[0]);
setFilename(e.target.files[0].name);
;
const onSubmit = async e =>
e.preventDefault();
const formData = new FormData();
formData.append('file', file);
try
const res = await axios.post('/uploads', formData,
headers:
'Content-Type': 'multipart/form-data'
);
const fileName, filePath = res.data;
setUploadedFile( fileName, filePath );
setMessage('File Uploaded');
catch (err)
if (err.response.status === 500)
setMessage('There was a problem with the server');
else
setMessage(err.response.data.msg);
;
返回:
return (
<Fragment>
<form onSubmit=onSubmit>
<div className='custom-file mb-4'>
<input
type='file'
className='custom-file-input'
id='customFile'
onChange=onChange
/>
<label className='custom-file-label' htmlFor='customFile'>
filename
</label>
</div>
<input
type='submit'
value='Upload'
/>
</form>
uploadedFile ? (
<div>
<div>
<h3>uploadedFile.fileName</h3>
<img src=uploadedFile.filePath alt=uploadedFile.fileName /> // Image here
</div>
</div>
) : null
</Fragment>
);
;
export default FileUpload;
答案
您可以先使用encodeURI
处理这些路径,以转义任何特殊字符:https://www.w3schools.com/jsref/jsref_encodeuri.asp
此函数对特殊字符进行编码,但以下字符除外:,/? :@&= + $#(使用
encodeURIComponent()
编码这些字符)。
['/uploads/350 x 150.png'
变为'/uploads/350%20x%20150.png'
以上是关于反应,渲染名称中带有空格的图像的问题的主要内容,如果未能解决你的问题,请参考以下文章