Я хочу создать файл с расширением .aspx (или любым другим расширением) полностью в памяти. Можно ли это сделать?
Сейчас у меня есть поток памяти, в котором есть все, что я хочу записать в этот файл, но на самом деле я не хочу создавать физический файл на сервере, так как тогда мне, вероятно, придется включить разрешения на запись для моего сервера. Я хочу создать файл в памяти и загрузить его через ftpWebRequest.
Edit.
Я, должно быть, делаю что-то не так, потому что в моем файле есть странные вещи, настолько странные, что я даже не могу вставить это в свои сообщения.
По сути, это куча квадратов между всем. Как будто это почти кажется, что это заполняет это для пробелов. Например, если я присмотрюсь, я увижу тег, но между буквами будет квадрат.
Вот часть моего кода. Может быть, я использую неправильную кодировку?
using (MemoryStream memory = new MemoryStream())
{
UnicodeEncoding uniEncoding = new UnicodeEncoding();
// readByline is the first bunch of data I want for my new file.
memory.Write(uniEncoding.GetBytes(readByLine), 0, readByLine.Length);
// second bunch of data I want for my new file.
memory.Write(uniEncoding.GetBytes(html), 0, html.Length);
// the follow code just figure out the end of the file that I am
// trying to extract some information out of.
string readToEnd = reader.ReadToEnd();
int endIndex = readToEnd.IndexOf(END_FLAG);
endIndex += END_FLAG.Length;
string restOfFile = readToEnd.Substring(endIndex);
// once found I write it the memory stream.
memory.Write(uniEncoding.GetBytes(restOfFile),0,restOfFile.Length);
// now I want to upload my file. I have the same file name already
// existing on the server? Do I have to tell it override it?
FtpWebRequest request2 = (FtpWebRequest)WebRequest.Create(path);
request2.Method = WebRequestMethods.Ftp.UploadFile;
request2.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
// now I am trying your code.
byte[] fileContents = memory.ToArray();
using (Stream writer = request2.GetRequestStream())
{
writer.Write(fileContents, 0, fileContents.Length);
}
FtpWebResponse test = (FtpWebResponse)request2.GetResponse();
return Content("test");
}