NodeJS 将React和Express应用程序部署到IIS -未呈现新图像

tuwxkamq  于 2023-08-04  发布在  Node.js
关注(0)|答案(1)|浏览(125)

我有一个使用Node、Express和React的全栈应用程序。当我从VScode本地运行代码时,我的应用程序会执行所有功能,如更新到数据库、将图像上传到文件夹等。
当我构建应用程序并将构建文件夹链接到IIS时,90%的应用程序都能正常工作。唯一不起作用的功能是上传图像的能力。后端API成功,文件被上传(在build文件夹之外)到Public文件夹,但图像永远不会呈现。如果我进入开发者工具并将文件名更改为现有的图像名,它将渲染图像。这对我来说毫无意义。
结构形式:
Public/-File1.jpg(此文件在生成/启动到IIS之前就已存在)-File2.jpg(此文件是在生成/启动后通过API和中间件添加的)
(THIS工作和渲染图像)(这不工作&没有图像渲染,但它存在于文件夹中)
我有一种感觉,这与我的IIS配置有关,但我迷失了方向。
web.config文件

<configuration>
  <system.webServer>
    <staticContent>
      <clientCache cacheControlCustom="public" cacheControlMaxAge="0" />
    </staticContent>
    <rewrite>
      <rules>
        <!-- Rewrite all non-existing files and directories to the root -->
        <rule name="React Routes" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            <add input="{REQUEST_URI}" pattern="^/api" negate="true" /> <!-- Exclude API routes from the rewrite -->
          </conditions>
          <action type="Rewrite" url="/" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

字符串
server.js snip it代码(这声明了文件夹的位置--这是有效的)

const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    const folder = determineUploadFolder(file); // Determine the folder dynamically based on the file
    cb(null, '../public/img/corporate-events');
    console.log('File folder destination: '+folder)
  },
  filename: (req, file, cb) => {
    console.log(file);
    const folder = determineUploadFolder(file); // Determine the folder dynamically based on the file
    const filePath = path.join(`${folder}`, Date.now() + path.extname(file.originalname));
    cb(null, filePath);
    console.log('File name: '+ filePath)
  }
});


我试着上传图像到builder/img,但仍然不工作。
如果我不能让这个工作,我可能只会尝试做一个反向代理,但这似乎是另一个头痛。

uxh89sit

uxh89sit1#

解决方案:
我的图像名称都是用整数值命名的,例如12345.jpg
IIS不喜欢这样,所以我在名称后面附加了字母,现在它们呈现出来了。

相关问题