2 Stimmen

Wie lädt man eine Datei auf einen HTTP-Server mit POST hoch?

Ich versuche, eine Datei auf den HTTP-Server mit POST hochzuladen, aber wenn ich es aufrufe, gibt es req.GetResponse(); im Client-Code

Der Remote-Server hat einen Fehler zurückgegeben: (405) Method Not Allowed.

Kundencode

    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string fileToUpload = Server.MapPath("~/Files/Ricky_Martin_Livin_la.mp3");
            string uploadUrl = "http://localhost/soundcheck/uploadfiles.aspx";
            //string uploadUrl = "http://10.0.2.2/musicapp/handle_upload.php";
            FileStream rdr = new FileStream(fileToUpload, FileMode.Open);
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uploadUrl);
            req.Method = "PUT"; // you might use "POST"
            req.ContentLength = rdr.Length;
            req.AllowWriteStreamBuffering = true;

            Stream reqStream = req.GetRequestStream();

            byte[] inData = new byte[rdr.Length];

            // Get data from upload file to inData 
            int bytesRead = rdr.Read(inData, 0, int.Parse(rdr.Length.ToString()));

            // put data into request stream
            reqStream.Write(inData, 0, int.Parse(rdr.Length.ToString()));

            rdr.Close();
            req.GetResponse();

            // after uploading close stream 
            reqStream.Close();
        }
    }

Server-Code

using System;
using System.Collections;
using System.IO;
using System.Data;
using System.Web;
using System.Text;
using System.Web.Security;

public partial class uploadfiles : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            LogInFile("First");
            HttpFileCollection uploadFile = Request.Files;
            LogInFile("Second");
            if (uploadFile.Count > 0)
            {
                HttpPostedFile postedFile = uploadFile[0];
                LogInFile("Thrid");
                System.IO.Stream inStream = postedFile.InputStream;
                LogInFile("Forth");
                byte[] fileData = new byte[postedFile.ContentLength];
                LogInFile("Fifth");
                inStream.Read(fileData, 0, postedFile.ContentLength);
                LogInFile("Sixth");
                postedFile.SaveAs(Server.MapPath("Data") + "\\" + postedFile.FileName);
            }        
        }
        catch (Exception ex)
        { 
            StringBuilder sb = new StringBuilder();
            sb.AppendLine("Message : " +ex.Message);
            sb.AppendLine("Source : " + ex.Source);
            sb.AppendLine("StackTrace : " + ex.StackTrace);
            sb.AppendLine("InnerException : " + ex.InnerException);
            sb.AppendLine("ToString : " + ex.ToString());

            LogInFile(sb.ToString());
        }
    }
    public void LogInFile(string str)
    {
        StringBuilder sb = new StringBuilder();
        using (StreamReader sr = new StreamReader(Server.MapPath("Data") + "\\expfile.txt"))
        {            
            sb.AppendLine("= = = = = =");
            sb.Append(sr.ReadToEnd());
            sb.AppendLine();
            sb.AppendLine();
        }
        sb.AppendLine(str);
        using (StreamWriter outfile = new StreamWriter(Server.MapPath("Data") + "\\expfile.txt"))
        {
            outfile.Write(sb.ToString());
        }
    }

}

Im Servercode schreibe ich diese Logs, um zu verfolgen, ob es einen Fehler oder einen Fehler in welcher Zeile gibt.

3voto

Andrew T Punkte 834
req.Method = "PUT"; // you might use "POST"

zu

req.Method = "POST"; 

und versuchen Sie es erneut.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X