2011-08-01 4 views
0

asmx Webサービスでスクリプトメソッドを起動するためにjQueryを使用してASP.net Webフォームサイトがあります。
は今、私は(説明のように、作成日など)いくつかの他のプロパティ私はもっときれいにファイルをアップロードするためのいくつかのjQueryのプラグインがあることを理解jquery + asp.net Webサービスファイルのアップロード

とともに、ユーザーがファイルをアップロードすることができますページを追加する必要がありますMSファイルアップローダコントロール(uploadifyなど)よりも優先されます。
しかし、私はどのように把握することはできません。(私はいくつかの例using MVCまたはhttp handlerを使用して見ましたが、どれがファイル自体に加えて、スクリプトサービス
2を使用していない、それはスクリプトのサービスと連携
1.を行い、I沿って、より多くのデータを送ることができるようにしたい。

任意のアイデア?
おかげ

答えて

0

使用の同じタスクのために、この1 ...

file uploader

これは、彼らは追加のデータの場合と同様に、異なる形態

内のファイルを投稿するので、それはあなたが送信できるテキストだ場合、私は、IEや他のブラウザのための2つのケースを持っている私は、ハンドラ

<%@ WebHandler Language="C#" Class="Upload" %> 

using System; 
using System.Web; 
using System.IO; 
using System.Collections.Generic; 

public class Upload : IHttpHandler 
{ 

    public void ProcessRequest(HttpContext context) 
    { 
     try 
     { 
      string filePath = "uploads//"; 
      string newFilename = Guid.NewGuid().ToString(); 

      string nonIEFilename = context.Request.Headers["X-File-Name"]; 

      if (!string.IsNullOrEmpty(nonIEFilename) || context.Request.Files.Count > 0) 
      { 
       // if IE 
       if (string.IsNullOrEmpty(nonIEFilename)) 
       { 
        HttpPostedFile file = context.Request.Files[0]; 
        string[] filenamesplit = file.FileName.ToLower().Split('.'); 

        newFilename = string.Format("{0}.{1}", newFilename, filenamesplit[1]); 
        file.SaveAs(context.Server.MapPath(string.Format("{0}{1}", filePath, newFilename))); 
        context.Response.Write(string.Format("{{\"path\":\"{0}uploads/{1}\"}}", context.Request.Url.AbsoluteUri.Replace("upload.ashx", string.Empty), newFilename)); 
       } 
       else // non IE browsers 
       { 
        string[] filenamesplit = nonIEFilename.ToLower().Split('.'); 
        newFilename = string.Format("{0}.{1}", newFilename, filenamesplit[1]); 

        using (FileStream filestream = new FileStream(context.Server.MapPath(string.Format("{0}{1}", filePath, newFilename)), FileMode.OpenOrCreate)) 
        { 
         Stream inputStream = context.Request.InputStream; 
         inputStream.CopyTo(filestream); 
         context.Response.Write(string.Format("{{\"path\":\"{0}uploads/{1}\"}}", context.Request.Url.AbsoluteUri.Replace("upload.ashx", string.Empty), newFilename)); 
        } 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      Errors.addError("Upload.ProcessRequest()", ex); 
     } 
    } 

    private bool IsAllowed(string file) 
    { 
     bool isAllowed = false; 

     List<string> allowedExtensionsList = new List<string>(); 
     allowedExtensionsList.Add("jpg"); 
     allowedExtensionsList.Add("png"); 
     allowedExtensionsList.Add("gif"); 
     allowedExtensionsList.Add("bmp"); 

     string[] filenamesplit = file.ToLower().Split('.'); 

     for (int j = 0; j < allowedExtensionsList.Count; j++) 
     { 
      if (allowedExtensionsList[j] == filenamesplit[1].ToLower()) 
      { 
       isAllowed = true; 
      } 
     } 

     return isAllowed; 
    } 

    public bool IsReusable 
    { 
     get 
     { 
      return false; 
     } 
    } 

} 

のために書かれたコードでありますサービスを呼び出すときに取得します。

+0

httpハンドラとuploadifyを使用して非常に似たようなことをしました。ありがとう –

関連する問題