2013-01-15 93 views
0

我使用js文件API和阅读文件,的FileReader是这样的:保存文件到文件使用C#

var reader = new FileReader(); 
reader.onload = handleReaderLoad; 
reader.readAsBinaryString(file); 

,这是读者负载处理程序中,我得到的文件内容以及使用jquery.ajax调用发送到服务器:

function handleReaderLoad(evt) { 
     fileToSend.Content = evt.target.result; 

     $.ajax({ 
      url: '@Url.Action("Upload")', 
      type: 'POST', 
      contentType: 'application/json', 
      data: JSON.stringify({ file: fileToSend }), 
      success: function (result) { 
       alert('success'); 
      } 
     }); 
    } 

在服务器端,我有:

[HttpPost] 
     public string Upload(UploadedFile file) 
     { 
      // save file 
      try 
      { 
       FileStream fs = new FileStream(@"c:\" + file.Name, FileMode.Create); 
       BinaryWriter bw = new BinaryWriter(fs); 
       bw.Write(Encoding.UTF8.GetBytes(file.Content)); 
      } 
      catch (Exception) { } 
      return null; 
     } 

一nd UploadedFile是:

public class UploadedFile 
    { 
     public string Name { get; set; } 
     public string Content { get; set; } 
    } 

我设法保存文件,但内容不同。我知道它与编码有关,但我只是没有在服务器上得到相同的文件。你能告诉我我做错了什么吗?

+0

什么格式它是现在... – Pranav

+0

这可能文件,并且因为JSON是一个文本格式..不是二进制。你必须序列化它.. –

+0

顺便说一句,你吞下的例外... –

回答

0

您可以读取上传文件中的所有内容,然后保存所有内容。
例如: -

Stream fileStream = fileUpload.PostedFile.InputStream; 
StreamReader sr = new StreamReader(fileStream); 
string str=sr.ReadToEnd(); 
StreamWriter sw = new StreamWriter(fs);// your FileStream :- 
sw.WriteLine(str); 
0

另一解决方案可以是(这我也使用)。而不是使用JSON和AJAX组合。您可以编写HTTPHandler来上传文件,并可以使用您在代码中完成的相同方式使用Ajax进行调用。

它可以让你上传任何形式的与要保存文件是什么格式最少的代码改变Example