回答編集履歴

1

追記

2021/02/25 03:21

投稿

SurferOnWww
test CHANGED
@@ -9,63 +9,3 @@
9
9
  HttpClient でファイルアップロード
10
10
 
11
11
  [http://surferonwww.info/BlogEngine/post/2019/08/11/file-upload-by-using-httpclient.aspx](http://surferonwww.info/BlogEngine/post/2019/08/11/file-upload-by-using-httpclient.aspx)
12
-
13
-
14
-
15
- **【追記】**
16
-
17
-
18
-
19
- 下のコメント欄で「自分はコードのデバッグはできませんのでピンポイントでの問題点の指摘や解決策の提示はできませんが、ひょっとしたら役に立つかもしれない情報を回答欄に追記しておきます」と書いた件です。
20
-
21
-
22
-
23
- > pdfのアップロードでは上手く行きますが、EXCELでは上手く行かず、躓いています。
24
-
25
-
26
-
27
- pdf ファイルは送信できているということですので、excel ファイルも送信はできているのではないかと思います。とすると、問題はサーバー側にあって、サイズの制限に引っかかっているとか、ヘッダー情報(Content-Type とか?)を見て制限をかけているということが怪しそうです。
28
-
29
-
30
-
31
- 送信できているかを確認するため Fiddler などのキャプチャツールを使って送信ヘッダとコンテンツを確認してください。
32
-
33
-
34
-
35
- 下の画像は、上に紹介した記事のアプリで「アンケート.xlsx」という excel ファイルを HttpWebRequest を利用して送信したときの送信ヘッダとコンテンツを Fiddler でキャプチャしたものです。記事ではコードは省略していますが、内容は質問者さんのものとほとんど同じ dobon.net のサンプルコードを使ってます。
36
-
37
-
38
-
39
- ![イメージ説明](e405efb6311e9e07ddf83143eff5ab8c.jpeg)
40
-
41
-
42
-
43
- multipart 内のヘッダーの Content-Disposition, name, filename, Content-Type はコードに書いた通りのものに設定されていて、その下に .xlsx ファイルのバイト列が続いています。
44
-
45
-
46
-
47
- サンプルコードは書き換えてないので Content-Type は image/jpeg のままで .xlsx ファイルの中身と違いますが、送信側の HttpWebRequest はそんなことは関知せず、指定した通りの内容で送信しているのが分かりますか?
48
-
49
-
50
-
51
- 質問者さんは Content-Type の設定をファイルの中身に合わせる必要があると考えているようですが、少なくとも送信するための条件にはならず、違っていても送信はされます。
52
-
53
-
54
-
55
- サーバー側では送信されてきたバイト列を見てファイルの種類を判断することはできませんので、ファイルの種類を判断するなら filename の拡張子または Content-Type で判断することになります。
56
-
57
-
58
-
59
- なので、それを見て特定の種類以外は拒否するということはできます。その前に、サイズ制限があってそこで引っかかっていれば拒否されるということがあるかもしれません。
60
-
61
-
62
-
63
- ただ、そういう制限は一切してなくて、アップロードされてきたファイルをそのままサーバー側で保存するということももちろん可能です。以下の画像がその例で、ヘッダの filename に指定された名前「アンケート.xlsx」で保存されています。
64
-
65
-
66
-
67
- ![イメージ説明](05299445d4233370b6345605f0102e2f.jpeg)
68
-
69
-
70
-
71
- 質問者さんがサーバー側も管理しているのであれば、そのあたりも調べてみてはいかがですか。