Я перевожу проект response / php (он был запущен на apache) для создания-реагирования-приложения и, таким образом, Express.js / прямой загрузки и т. Д. (Для разработки).
В этом проекте есть изображения, загруженные от пользователей, и они сохраняются вне корня документа через php-файл, который принимает в качестве строки запроса имя файла для загрузки.
file.php?image=file_name.png
и его компонент относительной реакции является
const Img = (props) => {
const findFile = () => {
// base64
if(props.file && props.file.startsWith('data:image/')){
return props.file;
}
return "file.php?name=" + props.file + "&type=" + props.type;
};
return (
<img src={findFile()} alt={props.alt || props.file}/>
);
};
После миграции в create-реагировать на приложение я добавил прокси в package.json
"proxy":"http://localhost"
но при этом изображения загружаются только тогда, когда пользователь находится на странице панели инструментов. На других страницах изображения не работают, потому что меняют путь к файлу file.php.
В панели инструментов (http: / localhost / auth)
127.0.0.1 - - [10/Oct/2017:23:59:12 +0200] "GET /file.php?name=avatar4.png&type=avatarDefaultDir HTTP/1.1" 200 12295
На другой странице (например: HTTP: // локальный / авториз / Профиль)
127.0.0.1 - - [10/Oct/2017:23:59:17 +0200] "GET /auth/file.php?name=avatar4.png&type=avatarDefaultDir HTTP/1.1" 200 27
Как я мог решить эту проблему?
Вам нужно использовать правильный путь к файлу file.php и использовать абсолютный путь к файлу file.php
вместо
return "file.php?name=" + props.file + "&type=" + props.type;
использование
return "/file.php?name=" + props.file + "&type=" + props.type;
это предполагает, что file.php находится в корне вашего проекта
Других решений пока нет …