1

Ajaxを介して画像をアップロードするプラグインを使用しています。このプラグインのjsソースはここにあります。

1200から始まる行が表示されている場合は、次のことに気付くでしょう。

// build query string
    params = params || {};
    params['qqfile'] = name;
    var queryString = qq.obj2url(params, this._options.action);

    xhr.open("POST", queryString, true);
    xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
    xhr.setRequestHeader("X-File-Name", encodeURIComponent(name));
    xhr.setRequestHeader("Content-Type", "application/octet-stream");
    xhr.send(file);

したがって、基本的に、アップロードされたファイル名は、qqfileパラメーターまたはヘッダー変数として使用できますX-File-Name。これらの方法は両方とも、このASP.NETMVCコードを使用してFF/Chromeで完全に機能します。

public JsonResult AjaxUpload(String qqfile)
    {

        String fileName = System.Web.HttpContext.Current.Request.Headers["x-file-name"];
        //rest of the code
    }

しかし、IEでは、これらのいずれも機能しません...ヘッダー変数はnullであり(デバッグでは、このパラメーターが送信されなかったことがはっきりとわかります)、1qqfile常に"System.Web.HttpPostedFileWrapper"です。

IEでこれをどのように解決できるか知っている人はいますか?

追伸:このプラグインのデモはこちらです。

4

1 に答える 1

4

私はついにそれを次のように行うことができました:

 public JsonResult AjaxUpload(HttpPostedFileWrapper qqfile)
    {
        //IE
        if (qqfile != null)
        {
            fileName = qqfile.FileName;
        }
        else
        {
            fileName = System.Web.HttpContext.Current.Request.Headers["x-file-name"];
        }
  //rest of the code
  }

IEHttpPostedFileWrapperにはfileNameと他のプロパティが含まれているようです(他のブラウザではこれが含まれていますnull)が、IEに対して特別なケースを実行する必要があったのはかなり奇妙です。

于 2012-05-31T08:46:11.940 に答える