You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET上传USDZ文件时Content-Type错误,如何设置为application/zip?

解决VB.NET WebClient上传USDZ文件时Content-Type设置问题

你遇到的问题是因为WebClient.UploadFile方法会自动根据文件扩展名或系统MIME映射设置Content-Type,并且会覆盖你手动添加的Header,导致最终Content-Type变成application/octet-stream。以下是两种可行的解决方案:

方法一:使用UploadData手动控制请求内容

直接读取文件字节并上传,这种方式能完全掌控请求头:

Dim filePath As String = "C:\Windows\Temp\model.usdz"
' 读取文件字节
Dim fileBytes As Byte() = System.IO.File.ReadAllBytes(filePath)

Dim wc As New WebClient()
' 设置Content-Type为application/zip
wc.Headers.Add("Content-Type", "application/zip")
' 上传数据
wc.UploadData("https://filebin.net/" + id + "/model.usdz", fileBytes)

方法二:使用HttpWebRequest精细控制请求

如果需要更灵活的请求配置,推荐使用HttpWebRequest:

Dim uploadUrl As String = "https://filebin.net/" + id + "/model.usdz"
Dim filePath As String = "C:\Windows\Temp\model.usdz"

' 创建请求
Dim request As HttpWebRequest = CType(WebRequest.Create(uploadUrl), HttpWebRequest)
request.Method = "POST"
request.ContentType = "application/zip"

' 写入文件内容到请求流
Using requestStream As Stream = request.GetRequestStream()
    Using fileStream As New System.IO.FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read)
        fileStream.CopyTo(requestStream)
    End Using
End Using

' 获取响应(可选,用于确认上传状态)
Using response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
    ' 这里可以添加响应处理逻辑,比如检查状态码
End Using

为什么原方法无效?

WebClient.UploadFile内部会自动检测文件的MIME类型,优先从系统注册表查找对应扩展名的类型,找不到则默认使用application/octet-stream,并且这个过程会覆盖你提前添加的Content-Type头,所以直接添加Header无法生效。

内容的提问来源于stack exchange,提问作者James Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 04:02:39