0

jqueryajaxから受け取ったファイルをバイト配列に変換するのに助けが必要です。ajaxfileuploadというプラグインを使用していて、jqueryajax呼び出しからfileuploadコントロールからハンドラーにファイルを送信します。これが私のハンドラーコードです:

if (context.Request.Files.Count > 0)
{
    string path = context.Server.MapPath("~/Temp");
    if (!Directory.Exists(path))
        Directory.CreateDirectory(path);

    var file = context.Request.Files[0];

    string fileName;

    if (HttpContext.Current.Request.Browser.Browser.ToUpper() == "IE")
    {
        string[] files = file.FileName.Split(new char[] { '\\' });
        fileName = files[files.Length - 1];
    }
    else
    {
        fileName = file.FileName;
    }
    string fileType = file.ContentType;
    string strFileName = fileName;

    FileStream fs = new FileStream("~/Temp/" + strFileName, FileMode.Open, FileAccess.Read);
    BinaryReader br = new BinaryReader(fs);
    Byte[] imagebytes = br.ReadBytes((Int32)fs.Length);
    br.Close();
    fs.Close();

    DBAccess dbacc = new DBAccess();
    dbacc.saveImage(imagebytes);

    string msg = "{";
    msg += string.Format("error:'{0}',\n", string.Empty);
    msg += string.Format("msg:'{0}'\n", strFileName);
    msg += "}";
    context.Response.Write(msg);
}

プロジェクト内のフォルダーにファイルを保存してから、そのファイルを取得してデータベースに保存しようとしています。画像が一時フォルダに保存されていることを確認できます。問題は、ファイルパスが間違っている(*)の行にあります。これは、取得されるファイルパスです。"'C:\ Program Files \ Common Files \ Microsoft Shared \ DevServer \ 10.0 \〜\ Temp \2012-06-0301.25.47.jpg'。" 一時フォルダはプロジェクト内のローカルにあり、そのフォルダ内の画像を取得したいと思います。ファイルパスを希望の場所に設定するにはどうすればよいですか?または、jquery ajax呼び出しからファイルを取得した後、ファイルをバイト配列に変換する別の方法はありますか?

これらの記事のクレジット:

4

2 に答える 2

1

これらの3行だけで十分です。

    int filelength = file.ContentLength;
    byte[] imagebytes = new byte[filelength ];
    file.InputStream.Read(imagebytes , 0, filelength );
于 2012-07-10T15:02:44.853 に答える
-3
using (var stream = upload.InputStream)
{
    // use stream here: using StreamReader, StreamWriter, etc.
}
于 2012-07-10T15:07:07.923 に答える