0

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

ファイルの保存はできたのですが、中身が違います。エンコーディングと関係があることは知っていますが、サーバー上で同じファイルを取得できません。私が間違っていることを教えてください。

4

2 に答える 2

0

他の解決策は次のとおりです(私も使用しています)。JSON と AJAX の組み合わせを使用するのではなく。HTTPHandler を記述してファイルをアップロードし、コードで行ったのと同じ方法で Ajax を使用して呼び出すことができます。

最小限のコード変更で、あらゆる種類のファイルをアップロードできます。

于 2013-01-15T13:24:56.160 に答える
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);
于 2013-01-15T10:14:48.963 に答える