私はヴァルムのAJAXはスクリプトをアップロードしてプレーしてきた:http://valums.com/ajax-upload/バリュームAjax Upload with C#ashxは 'インデックスが範囲外です。負でなく、コレクションのサイズより小さくなければなりません。エラー
それは、いずれかの恐ろしいSWFUploadのフラッシュオブジェクトを使用していない、私のためにすべてのボックスを刻みます。私は私の.ashxスクリプト(私はデバッグすることができない、お金のために)のJSポイントを持っています。これは私が.ashxに持っているものです。
パブリッククラスアバター:IHTTPハンドラ、System.Web.SessionState.IRequiresSessionState {
public void ProcessRequest (HttpContext context) {
//Debugger.Break();
string result = "{\"success\":true}";
string path = HttpContext.Current.Server.MapPath("/client/vault/" + Helpers.CurrentClientHash(context.Session["SessionHash"].ToString()) + "https://stackoverflow.com/users/" + context.Session["SessionHash"].ToString() + "/");
string saveLocation = string.Empty;
string fileName = string.Empty;
try
{
int length = 4096;
int bytesRead = 0;
Byte[] buffer = new Byte[length];
//This works with Chrome/FF/Safari
// get the name from qqfile url parameter here
Debugger.Break();
fileName = context.Request["params"];
Debug.Write(fileName);
saveLocation = context.Server.MapPath(path) + fileName;
try
{
using (FileStream fileStream = new FileStream(saveLocation, FileMode.Create))
{
do
{
bytesRead = context.Request.InputStream.Read(buffer, 0, length);
fileStream.Write(buffer, 0, bytesRead);
}
while (bytesRead > 0);
}
}
catch (UnauthorizedAccessException ex)
{
// log error hinting to set the write permission of ASPNET or the identity accessing the code
result = result.Replace("true","false, \"error\":" + ex.Message + " " + ex.InnerException + " " + ex.StackTrace.ToString());
}
}
catch
{
try
{
//This works with IE
fileName = Path.GetFileName(context.Request.Files[0].FileName);
saveLocation = context.Server.MapPath(path) + fileName;
context.Request.Files[0].SaveAs(saveLocation);
}
catch (Exception ex)
{
result = result.Replace("true", "false, \"error\":" + ex.Message + " " + ex.InnerException);
}
}
context.Response.Write(result);
}
public bool IsReusable {
get {
return false;
}
}
}
このコードは親切に別のユーザーによってささげましたそれはPHPのサーバー側のものと一緒に出荷されるため、Valumのスクリプトです。私は、アップローダを実行すると、私はコンソールでこれを取得する:
[アップローダー] responseText = {「成功」:falseの場合、「エラー」:インデックスが 範囲外でした。負でなく、コレクションのサイズより小さくなければなりません。 パラメータ名:index}
...もちろんアップロードは失敗します。私はそれがFileStream
と何か関係があると確信していますが、意味のあるデバッグがなければ私は問題を見つけることができません。私はそれが.ashxで、ファイルがされていないので、ピックアップされたかもしれないと思うが、それはのparamsにあります:
だから、私は2つの質問私は可能性がある場合があります。
を- 誰でも見ることができますか、どこで、なぜ私はインデックスの例外を得ていますか?
- もしそうでなければ、どうすればこの問題をデバッグできますか?私はJSの負荷がかかるようではないので、VS2010からデバッガを実行することはできません。私は明らかにashxに直接行くことはできません...いずれかのアイデア?
ヘルプは大歓迎:)
は
+1それはあなた自身で解決します。 –