保存文件上传到服务器作为二进制字符串从javascript到文件使用c#
本文关键字:javascript 文件 字符串 二进制 服务器 保存文件 | 更新日期: 2023-09-27 17:53:26
我使用js文件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; }
}
我设法保存文件,但内容是不同的。我知道这与编码有关,但我只是在服务器上没有得到相同的文件。你能告诉我哪里做错了吗?
您可以从上传的文件中读取所有内容,然后保存所有内容。
例如:-
Stream fileStream = fileUpload.PostedFile.InputStream;
StreamReader sr = new StreamReader(fileStream);
string str=sr.ReadToEnd();
StreamWriter sw = new StreamWriter(fs);// your FileStream :-
sw.WriteLine(str);
另一个解决方案可能是(我也在使用)。而不是使用JSON和AJAX的组合。您可以编写HTTPHandler来上传文件,并可以使用Ajax调用它,就像您在代码中所做的那样。
它将允许你上传任何类型的文件和最少的代码更改示例