---
name: harvard_curl_upload
description: Harvard Dataverseアップロードはcurl -Fを使う（Pythonのmultipartは403になる）
type: feedback
---

Harvard Dataverseへのファイルアップロードは**curl -F**を使うこと。Pythonのurllib手動multipart構築は403エラーになる。

**Why:** 2026-04-07に12件一括アップロード時に判明。Pythonのurllib.request + 手動boundary構築では全件403。同じファイルをcurl -Fで送ると200 OK。原因はmultipartのContent-Disposition/boundaryの微妙なフォーマット差異と推測。

**How to apply:** Harvard Dataverseアップロード時は必ず以下の形式を使用:
```bash
curl -s -H "X-Dataverse-key: $TOKEN" -X POST \
  -F 'jsonData={"description":"...","categories":["Data"],"restrict":false}' \
  -F "file=@path/to/file.md" \
  "https://dataverse.harvard.edu/api/datasets/:persistentId/add?persistentId=doi:10.7910/DVN/KC56RY"
```
- Zenodo/IA/Qiitaは従来通りPython urllib or curlどちらでもOK
- Harvard Dataverseの既存ファイル数: 32件（2026-04-07時点）
