C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

POSTでファイルアップロード

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■93875 / inTopicNo.1)  POSTでファイルアップロード
  
□投稿者/ EBISU (1回)-(2020/02/16(Sun) 15:13:55)

分類:[.NET 全般] 

IIS10 WindowsServer2019
VisualStudio2010

アプリからASP.NETサイトにPOSTでファイルのアップロードができなくて困っています。
アプリ側はこのような感じ(http://dobon.net/vb/dotnet/internet/webrequestpost.html)です。
ファイルを受け取るASP.NET側(upload.aspx)のRequestを見ると空でファイルが送られてないようです。
ちなみにHtmlでフォームを作ったものでupload.aspxに送ると正常に送られます。
サーバの設定なのか何か分かりません。ご存じであればどなたかご教授お願い致します。
引用返信 編集キー/
■93876 / inTopicNo.2)  Re[1]: POSTでファイルアップロード
□投稿者/ WebSurfer (2026回)-(2020/02/16(Sun) 15:33:18)
No93875 (EBISU さん) に返信

それだけの情報では少なくとも自分には何もわかりません。

Fiddler などのキャプチャツールを使って、要求・応答が期待通りか調べてください。
ブラウザではうまくいくのであれば、それと比較してみるのがよさそうです。
引用返信 編集キー/
■93877 / inTopicNo.3)  Re[1]: POSTでファイルアップロード
□投稿者/ WebSurfer (2027回)-(2020/02/16(Sun) 16:07:40)
No93875 (EBISU さん) に返信

質問者さんが何故うまくいかないのかは、上に述べたように今提供されている情報では
全く分かりませんが、参考に問題なくできる例を書いておきます。

クライアント側は以下の記事を見てください。

HttpClient でファイルアップロード
http://surferonwww.info/BlogEngine/post/2019/08/11/file-upload-by-using-httpclient.aspx


ASP.NET 側は以下の通り。

.aspx.cs
--------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _0072_FileUpload : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        // WindowsFormsApplication Form3 で HttpWebRequest / HttpWebResponse
        // を使ってファイルが送信されてきたときの処理
        System.Collections.Specialized.NameValueCollection formData = Request.Form;
        string comment = formData["comment"];

        //HttpPostedFile postedFile = Request.Files["ctl00$MainContent$FileUpload1"];
        HttpPostedFile postedFile = Request.Files["upfile"];

        // PostBack でないとファイルを送信してもこれが何故か false になるのでこれで判定はできない
        bool hasFile = FileUpload1.HasFile; 

        if (!IsPostBack)
        {
            if (postedFile != null && !string.IsNullOrEmpty(postedFile.FileName))
            {
                // アプリケーションルート直下に作ったフォルダ UploadedFiles の物理パスの取得
                string savePath = MapPath("~/UploadedFiles/");

                savePath += System.IO.Path.GetFileName(postedFile.FileName);

                // 同名ファイルは上書きされる
                postedFile.SaveAs(savePath);

                string response = Server.HtmlEncode(System.IO.Path.GetFileName(postedFile.FileName)) +
                    " (" + postedFile.ContentType + ") - " +
                    postedFile.ContentLength.ToString() +
                    " bytes アップロード完了";

                Response.Write(response + " (" + comment + ")");
                Response.Flush();
                Response.SuppressContent = true;
            }
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        if (FileUpload1.HasFile)
        {
            // アプリケーションルート直下に作ったフォルダ UploadedFiles の物理パスの取得
            string savePath = MapPath("~/UploadedFiles/");

            savePath += FileUpload1.FileName;

            // 同名ファイルは上書きされる
            FileUpload1.SaveAs(savePath);

            UploadStatusLabel.Text = Server.HtmlEncode(FileUpload1.FileName) +
                " (" + FileUpload1.PostedFile.ContentType + ") - " +
                FileUpload1.PostedFile.ContentLength.ToString() +
                " bytes アップロード完了";
        }
    }
}

.aspx (VS2015 のテンプレートで生成されるマスターページ利用)
-----------------------------------------------------------

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" 
    AutoEventWireup="true" CodeFile="0072-FileUpload.aspx.cs" Inherits="_0072_FileUpload" %>

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">
    <h1>FileUpload のテスト</h1>
    <asp:FileUpload ID="FileUpload1" runat="server" />
    <br />
    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
    
    <hr />

    <asp:Label id="UploadStatusLabel" runat="server"></asp:Label>

</asp:Content>

引用返信 編集キー/
■93879 / inTopicNo.4)  Re[2]: POSTでファイルアップロード
□投稿者/ EBISU (2回)-(2020/02/16(Sun) 21:07:56)
No93877 (WebSurfer さん) に返信


少ない情報ですみません。やってることが単純だったので割愛してしまいました。
Fiddlerで調べてしばらく悩んだ所、、ResponseHeadersがHTTP/1.1 302 Foundとなり
もしやとIISのクッキーレス・セッションを外したら無事送信できました。
本当にありがとうございました。

解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ