Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Filetype is not available immediately after uploading a file

Aperta
#413 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
30/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
github-actions, shell
Ambito
api, ci-cd

Direzione di ricerca

Inizia con la sequenza di upload e la Slack files.completeUploadExternal response mostrata nell’issue, quindi confrontala con il chat.postMessage error e l’image block payload. Non viene indicato alcun file del repository né alcun test, quindi determina innanzitutto se questo comportamento appartiene all’action o alla Slack API integration; il lavoro è completato quando la causa e un percorso di correzione riproducibile sono documentati.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

docs question

Hi All,

I am trying to send slack message with image from github action, but it is failing everytime. First let me explain, what I am trying to achieve:

  • Upload an image in slack
  • Extract the permalink of the uploaded image
  • Then add that permalink into slack message and send

All these steps are working fine, except it fails to send the message with image. Let me share the code:

Upload image and extract permalink:

`      # 📤 Upload Doughnut Chart to Slack & Get Image URL
      - name: Upload Chart to Slack
        if: always()
        run: |
          response=$(curl -s -X POST \
            -H "Authorization: Bearer ${{ secrets.SLACK_BOT_TOKEN }}" \
            -H "Content-Type: application/x-www-form-urlencoded" \
            --data "filename=test_results.png&length=$(stat -c%s test_results.png)" \
            https://slack.com/api/files.getUploadURLExternal)

          echo "Slack Upload URL Response: $response"

          upload_url=$(echo "$response" | jq -r '.upload_url')
          file_id=$(echo "$response" | jq -r '.file_id')

          if [ "$upload_url" == "null" ] || [ "$file_id" == "null" ]; then
            echo "⚠️ Failed to get upload URL from Slack."
            exit 1
          fi

          # Step 2: Upload the file to the received URL
          upload_response=$(curl -X POST \
            -H "Content-Type: image/png" \
            -F file=@test_results.png \
            "$upload_url")

          echo "Slack File Upload Response: $upload_response"

          # Step 3: Complete the upload and get the file permalink
          complete_response=$(curl -s -X POST \
            -H "Authorization: Bearer ${{ secrets.SLACK_BOT_TOKEN }}" \
            -H "Content-Type: application/json" \
            -d '{
                  "files": [{"id": "'"$file_id"'", "title": "Test Results"}]
                }' \
            https://slack.com/api/files.completeUploadExternal)

          echo "Slack Complete Upload Response: $complete_response"

          image_url=$(echo "$complete_response" | jq -r '.files[0].permalink')

          if [ "$image_url" == "null" ]; then
            echo "⚠️ Failed to upload image to Slack."
            exit 1
          else
            echo "✅ Image uploaded: $image_url"
            echo "IMAGE_URL=$image_url" >> $GITHUB_ENV
          fi`

The output it displays:

Image

Send slack message with image:

`# 📢 Send Cypress Results to Slack (With Image & Test Summary)
      - name: Send Cypress Results to Slack
        if: always()
        run: |
          curl -X POST \
            -H "Authorization: Bearer ${{ secrets.SLACK_BOT_TOKEN }}" \
            -H "Content-Type: application/json" \
            -d '{
              "channel": "XXXXXXX",
              "blocks": [
                {
                  "type": "header",
                  "text": {
                    "type": "plain_text",
                    "text": "🧪 API Test Report",
                    "emoji": true
                  }
                },
                {
                  "type": "rich_text",
                  "elements": [
                    {
                      "type": "rich_text_section",
                      "elements": [
                        {
                          "type": "text",
                          "text": "'"${{ steps.cypress-results.outputs.failed == '0' && '✅ All Tests Passed!' || (steps.cypress-results.outputs.failed != '0' && steps.cypress-results.outputs.passed != '0') && '⚠️ Some Tests Failed' || '❌ All Tests Failed!' }}"'",
                          "style": {
                            "bold": true,
                            "italic": true
                          }
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "divider"
                },
                {
                  "type": "section",
                  "fields": [
                    {
                      "type": "mrkdwn",
                      "text": "*Total:* `${{ steps.cypress-results.outputs.total }}`\n✅ Pass: `${{ steps.cypress-results.outputs.passed }}`\n❌ Fail: `${{ steps.cypress-results.outputs.failed }}`\n⏭️ Skip: `${{ steps.cypress-results.outputs.skipped }}`"
                    },
                    {
                      "type": "mrkdwn",
                      "text": "⏱️ Duration: `${{ steps.cypress-results.outputs.duration }} sec`\n📈 Success Rate: `${{ steps.cypress-results.outputs.success_rate }}%`"
                    }
                  ],
                  "accessory": {
                    "type": "image",
                    "image_url": "${{ env.IMAGE_URL }}",
                    "alt_text": "Test Results Doughnut Chart"
                  }
                },
                {
                  "type": "context",
                  "elements": [
                    {
                      "type": "mrkdwn",
                      "text": "📋 *Reports:* • 🔍 <https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}|GitHub Actions Run> • 📊 <https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}/artifacts/${{ env.ARTIFACT_ID }}|Download HTML Report>"
                    }
                  ]
                }
              ]
            }' \
            https://slack.com/api/chat.postMessage`

The Output is displaying:

Image

As per the error it is saying that filetype is missing. If you see the output after uploading the image, then you will also see filetype is missing. I do not know if that is the issue. If that is issue, why image filetype is not setting when uploaded by slack api? Any idea or solution?

Lingua principale
JavaScript
Stelle
1.3k
Fork
200
Merge medio
2h 59m
PR unite (30g)
6

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di slackapi/slack-github-action

Tutte le issue di slackapi/slack-github-action

Issue simili

Altre issue su JavaScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.