簡體   English   中英

無法在 Azure Devops 中打開附加到工作項的 Excel 文件

[英]Unable to open the Excel file attached to work item in Azure Devops

我正在創建一個工具,用於使用 Azure Devops REST API 將 excel 文件附加到工作項。我能夠將 excel 文件添加到工作項,但是當我嘗試打開它時,它只是說“文件格式或文件擴展名無效” . 我感謝任何建議或任何投入。

編輯:根據 Lance-Li 的建議,我將 excel 文件轉換為字節並將其發送到請求正文中,如下所示

 byte[] filedata = File.ReadAllBytes(filepath);
dynamic WorkItem = new List<dynamic>() {

                new
                {

                  filedata,
                }

            };
    var WorkItemValue = new StringContent(JsonConvert.SerializeObject(WorkItem),Encoding.UTF8, "application/json-patch+json");

現在使用 content-type=application\\octet-stream 將上述工作項值發送到 post 方法。 但我仍然面臨格式問題。我做錯了什么嗎?

通常我們調用Attachments-Create (將附件上傳到附件存儲)然后添加一個附件(將附件從附件存儲添加到工作項)以將本地附件添加到工作項。

問題原因:

當我們使用first rest api(Attachments - Create)上傳附件時,我們應該小心。 在 post 請求中, filename=xxx沒有接收到文件的任何路徑。 不會從桌面或其他文件夾中獲取文件。

經過多次測試,我重現了與您相同的問題。 我還發現,如果我們運行 post 請求,它實際上只是創建了一個同名的文件,而不是獲取本地文件。 例如,如果我有一個包含just for test內容的本地test.txt文件,在我的請求正文中我有"User text content to upload" ,結果是獲得一個名為test.txt附件,其內容為"User text content to upload"

所以我認為你可以上傳一個帶有文本內容的xx.xlsx文件。 這就是為什么我們收到file foramt not valid錯誤的原因。

兩種解決方法:

1.上傳為二進制文件,將excel文件轉換為二進制文件,並將二進制內容粘貼到請求正文中。 (關於是否可以轉換excel以及如何轉換,這是另一個問題,所以我不在這里討論它)

2.我最終找到的另一種解決方法是在Invoke-RestMethod命令中使用-Infile並且效果很好!

(如果你正在使用類似postman運行API,則contentType => application/octet-stream ,體=> binary

我關於Attachments-Create Powershell 腳本:

$token = "YourPat"

$url="https://dev.azure.com/YourOrgName/_apis/wit/attachments?fileName=YourFileName.xlsx&api-version=5.1"

$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))

$filepath="YourFilePath\YourFileName.xlsx"

$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Post -InFile $filepath -ContentType application/octet-stream

Write-Host $response

希望以上都能幫到你:)而且由於最初問題的原因只是關於第一個api的使用,所以我不會在這里談論第二個......

另外:如果有人使用 C# 客戶端 api 上傳二進制文件,請嘗試使用 contenttype application\\json ,來自dhulipala murali 的信息 如果有人使用 PS/郵遞員, application/octet-stream在我身邊工作得很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM