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));
}
}
}
