Avatar billede pelkjaer Nybegynder
26. november 2003 - 13:24 Der er 3 kommentarer og
1 løsning

post til fil som gemmer fra "post-server"

Problem:

Jeg forsøger at poste nogle variabler til en fil på et andet domæne, og herefter lade denne fil "grabbe" filer fra "post" serveren udfra de modtagne variabler.

Jeg kan ikke helt få det til at virke, men får desværre ingen fejl - der sker blot ingenting.

Mine 2 filer:

post.aspx

///

<%@ Page Language="c#" %>
<%@ import Namespace="System.Net" %>
<%@ import Namespace="System.IO" %>
<script runat="server">

void Page_Load(Object Src, EventArgs E) {

  // set filename(s)
  string postData = "pictures=icon_testpic.gif";
  // set Url
  string useURL = "http://peterelkjaer.dk/dotnet/getFiles.ashx";

  // WebRequest class
  WebRequest objRequest = WebRequest.Create(useURL);
  objRequest.Timeout = 60000; // In milliseconds - in this case 60 seconds
  objRequest.Method = "POST";
  objRequest.ContentLength = postData.Length;
  objRequest.ContentType = "application/x-www-form-urlencoded";

  // Create StreamWriter class and attach the WebRequest object
  StreamWriter postWriter = new StreamWriter(objRequest.GetRequestStream());
  postWriter.Write(postData);
  postWriter.Close();


  // Create WebResponse class and get the output to the rawOutput string
  WebResponse objResponse = objRequest.GetResponse();
  StreamReader sr = new StreamReader(objResponse.GetResponseStream());
  string rawOutput= sr.ReadToEnd();
  sr.Close();
}

</script>
<html>
<head>
</head>
<body>
</body>
</html>


*******************************

getFiles.ashx
///

using System;
using System.Web;

namespace emotor.builder {

  public class getFiles : IHttpHandler {

    // Get Request
    public void ProcessRequest(HttpContext context) {
      string pictures = context.Request["pictures"];
      context.Response.Write ("Har netop hentet: " + pictures);
    }


    // Boolean value
    public bool IsReusable {
      get {
        return true;
      }
    }

    // Page_Load
    private void Page_Load(object sender, System.EventArgs e) {
      System.Net.WebRequest myReq;
      System.Net.WebResponse myRes;
      System.IO.StreamReader myReader;

      // Get File(s)
      string fileToFetch = "http://www.emotor.dk/dotnet/gfx/" + pictures; // change if you want

      // Save as
      string saveAs = pictures;

      // Making the request
      myReq = System.Net.WebRequest.Create(fileToFetch);

      // Getting the response back
      myRes = myReq.GetResponse();

      // Saving the response into a stream
      System.IO.Stream myStream = myRes.GetResponseStream();

      // Creating a binary reader for the stream
      System.IO.BinaryReader myByteReader = new System.IO.BinaryReader(myStream);

      // Getting the binary file's length
      int count = (int)myRes.ContentLength;

      // Saving
      Byte[] binaryArray = myByteReader.ReadBytes(count);
      int binaryArrayLength = binaryArray.Length;

      System.IO.FileStream myFile = new System.IO.FileStream(Server.MapPath(saveAs),System.IO.FileMode.Create);
      myFile.Write(binaryArray,0,binaryArrayLength);
      myFile.Close();

      Response.Write("Fetching " + fileToFetch + "<br/>");
      Response.Write("Type of file is " + myRes.ContentType + ".<br/>");
      Response.Write("The length is " + myRes.ContentLength + "bytes.<br/>");
      Response.Write("The file has been saved as " + Server.MapPath(saveAs));
    }
  }
}
Avatar billede pelkjaer Nybegynder
26. november 2003 - 13:30 #1
i getFiles.ashx har jeg lige ændret strengen "pictures" så den er tilgængelig i alle metoder:

public string pictures;
Avatar billede pelkjaer Nybegynder
26. november 2003 - 13:55 #2
Min ashx fil ser nu sådan ud (stadig uden at virke)

<%@ WebHandler language="C#" class="emotor.builder.getFiles" %>
using System;
using System.Web;
using System.IO;
using System.Web.UI;

namespace emotor.builder {

  public class getFiles : IHttpHandler {

    // Get Request
    public void ProcessRequest(HttpContext context) {
      string pictures = context.Request["pictures"];

      // Create request, response and stream
      System.Net.WebRequest myReq;
      System.Net.WebResponse myRes;
      System.IO.StreamReader myReader;

      // File to fetch
      string fileToFetch = "http://www.emotor.dk/dotnet/gfx/" + pictures; // change if you want

      // Save as
      string saveAs = pictures; // change if you want

      // Making the request
      myReq = System.Net.WebRequest.Create(fileToFetch);

      // Getting the response back
      myRes = myReq.GetResponse();

      // Saving the response into a stream
      System.IO.Stream myStream = myRes.GetResponseStream();

      // Creating a binary reader for the stream
      System.IO.BinaryReader myByteReader = new System.IO.BinaryReader(myStream);

      // Getting the binary file's length
      int count = (int)myRes.ContentLength;

      // NOW SAVING

      Byte[] binaryArray = myByteReader.ReadBytes(count);
      int binaryArrayLength = binaryArray.Length;

      System.IO.FileStream myFile = new System.IO.FileStream(Server.MapPath(saveAs),System.IO.FileMode.Create);
      myFile.Write(binaryArray,0,binaryArrayLength);
      myFile.Close();
    }


    // Boolean value
    public bool IsReusable {
      get {
        return true;
      }
    }

  }
}
Avatar billede pelkjaer Nybegynder
19. december 2003 - 13:37 #3
lukket
Avatar billede montago Praktikant
08. oktober 2007 - 13:07 #4
Kom med løsningen !! dammit
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester