【问题标题】:Save file uploaded to server as binary string from javascript to file using c#使用c#将上传到服务器的文件作为二进制字符串从javascript保存到文件
【发布时间】:2013-01-15 10:02:35
【问题描述】:

我正在使用 js File API 并使用 FileReader 读取文件,如下所示:

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

UploadedFile 是:

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

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

【问题讨论】:

  • 你想用什么格式保存文件,现在是什么格式...
  • 这可能是因为 JSON 是一种文本格式.. 不是二进制的。你必须序列化它..
  • 顺便说一句,你正在吞下异常......
  • 我想以与客户端相同的格式保存它,所以任何格式,文档,图像格式,pdf...

标签: c# javascript asp.net asp.net-mvc-3


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    另一个解决方案可能是(我也在使用)。而不是使用 JSON 和 AJAX 组合。您可以编写 HTTPHandler 来上传文件,并可以使用 Ajax 调用它,就像您在代码中所做的那样。

    它将允许您上传任何类型的文件,并且代码更改最少Example

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-21
      • 1970-01-01
      • 2015-08-14
      • 2012-10-04
      • 2021-05-31
      • 2017-01-06
      相关资源
      最近更新 更多