反应,渲染名称中带有空格的图像的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反应,渲染名称中带有空格的图像的问题相关的知识,希望对你有一定的参考价值。

我的React-Express应用程序有问题,名称中带有空格的图像未在应用程序中呈现,但路径正确。名称中没有空格的图像效果很好。路径正确,可在浏览器中使用,因为%替换了空格。

Img with space:Image without space上传图片的组件:

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'

以上是关于反应,渲染名称中带有空格的图像的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在本机反应中基于数组内的图像uri渲染图像组件

IOS 14图像渲染问题本机反应

如何在反应本机应用程序名称中添加空格?

如何在服务器端做出反应来渲染图像?

无法遍历文件名中带有空格的文件、Windows 批处理文件和图像魔法

名称中的反应本机图像变量不起作用