Fix Invoke-RestMethod to support read-only files in multipart form data #26454
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR fixes issue #25482 where
Invoke-RestMethodandInvoke-WebRequestfail when uploading read-only files via the-Formparameter.Changes
Code Fix
src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.csFileAccess.Readparameter toFileStreamconstructor inGetMultipartFileContent()methodTest Coverage
test/powershell/Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1Invoke-WebRequest -Form supports read-only file valuesInvoke-RestMethod -Form supports read-only file valuesRoot Cause
The
GetMultipartFileContent()method was opening files withFileMode.Openwithout specifyingFileAccess, which defaults toFileAccess.ReadWrite. This caused an "Access denied" error when attempting to upload read-only files.Fix
Changed the FileStream initialization from:
To:
Since the file is only being read for upload,
FileAccess.Readis the correct access mode and allows read-only files to be processed.Related Issue
Fixes #25482