我想在内存中完全创建一个带.aspx扩展名(或任何其他扩展名)的文件。这可以做到吗?如何在内存中创建文件(.aspx,html,txt)?
现在我有一个内存流,有我想要写入这个文件的所有东西,但我实际上并不想在服务器上创建一个物理文件,因为我可能必须为我的服务器启用写入权限。我想要做的是在内存中创建文件并通过ftpWebRequest进行上传。
编辑。
我必须做错事,因为我在我的文件中出现奇怪的东西,这很奇怪,我甚至无法将其粘贴到我的帖子中。
基本上它是一堆之间的广场。就像它几乎好像填补了空间。就像如果我仔细观察,我会看到标签仍然存在,但每个字母之间会有一个正方形。
这是我的代码的一部分。也许我正在使用错误的编码?
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");
}
这是不是在引擎盖下创建一个临时文件? – 2009-11-15 21:02:54
不是我所知道的。为什么要这样? – dtb 2009-11-15 21:04:14
首先是什么区别?我也不知道如何做到这一点为ftpWebRequest到目前为止我有这个 FtpWebRequest request2 =(FtpWebRequest)WebRequest.Create(path); request2.Method = WebRequestMethods.Ftp.UploadFile; request2.Credentials = new NetworkCredential(ftpUsername,ftpPassword); 现在我不知道如何写我的记忆流数据。 – chobo2 2009-11-15 21:04:25