GitLab 包管理器在我的文件中添加了 WebKitFormBoundary

问题描述 投票:0回答:1

我构建了一个小型 HTML/JS 页面,它使用 GitLab API 将文件上传到包注册表中,例如:

<input class="form-control mb-1" type="file" id="formFile" />
<button class="btn btn-primary w-100" onclick="Send();">
<script>
function Send() {
...
var formData = new FormData();
      formData.append("file", select_file);

      fetch(file_string, {
        method: "PUT",
        headers: {
          "PRIVATE-TOKEN": GITTOKEN,
        },
        body: formData,
      })
        .then((response) => response.json())
        .then((data) => {
...

我注意到,出于某种原因,如果我上传像 crc.txt 这样的文本文件,其中仅包含像 ac8daadc 这样的 CRC 代码,GitLab 似乎会写入文件的有效负载/内容,如下所示:

------WebKitFormBoundaryVPZEUt253yBGuPTN
Content-Disposition: form-data; name="file"; filename="crc.txt"
Content-Type: text/plain

ac8daadc
------WebKitFormBoundaryVPZEUt253yBGuPTN--

这是为什么呢?我可以保留原始有效负载吗?

gitlab package put gitlab-api
1个回答
0
投票

事实证明问题出在

var formData = new FormData();formData.append("file", select_file);
代码上。

formData 不仅上传数据,还将其他信息序列化到文件中,从而破坏文件。

直接使用

传递文件
      fetch(file_string, {
        method: "PUT",
        headers: {
          "PRIVATE-TOKEN": GITTOKEN,
        },
        body: select_file,
      })

工作了

© www.soinside.com 2019 - 2024. All rights reserved.