■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>
|
|