none
请问 jsp form 可以上传文件到asp.net 网站上么? RRS feed

  • 问题

  • jsp的form (enctype="multipart/form-data")需要将文件上传给asp.net处理,但是 context.Request.Files["Filedata"]请求不到。

    ps:在jsp form 不加enctype="multipart/form-data"时,context.Request.Form["currentUserID"]可以获得值,加了以后就获取不到了。

    请各位帮助解答,谢谢~

    --------------------------------------------------------------------------------

    希望回答者能用真实的tomcat环境模拟本问题,而非请求端也为asp.net iis~

    后来我通过request.BinaryRead 来分析请求数据的~最后获得了上传文件,希望各位有更好的方法~谢谢

    2011年12月28日 7:36

答案

  • 要上传文件,form就一定要加enctype="multipart/form-data"

     

    在ASP.net 端

    您要用遍历的方式来遍历context.Request.Files并储存post过来的文件就可以了

    Sample Code (JSP):

    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page</title>
        </head>
        <body>
            <form method="post" enctype="multipart/form-data" action="http://localhost:4766/test/upload.ashx">
                <input type="file" name="Filedata"/>
                <input type="submit" value="submit" name="mySubmit" />
                
            </form>
        </body>
    </html>
    
    

     

     

    upload.ashx(ASP.net):

    <%@ WebHandler Language="C#" Class="upload" %>
    
    using System;
    using System.Web;
    using System.IO;
    
    public class upload : IHttpHandler {
        
        public void ProcessRequest (HttpContext context) {
    
            for (int i = 0; i < context.Request.Files.Count; i++)
            {
                HttpPostedFile file = context.Request.Files[i];
                string fileName = Guid.NewGuid().ToString() + Path.GetExtension(file.FileName);
                file.SaveAs(context.Server.MapPath("~/") + fileName);
            }
           
    
             
        }
     
        public bool IsReusable {
            get {
                return false;
            }
        }
    
    }
    

     


    2011年12月28日 13:37

全部回复

  • 要上传文件,form就一定要加enctype="multipart/form-data"

     

    在ASP.net 端

    您要用遍历的方式来遍历context.Request.Files并储存post过来的文件就可以了

    Sample Code (JSP):

    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page</title>
        </head>
        <body>
            <form method="post" enctype="multipart/form-data" action="http://localhost:4766/test/upload.ashx">
                <input type="file" name="Filedata"/>
                <input type="submit" value="submit" name="mySubmit" />
                
            </form>
        </body>
    </html>
    
    

     

     

    upload.ashx(ASP.net):

    <%@ WebHandler Language="C#" Class="upload" %>
    
    using System;
    using System.Web;
    using System.IO;
    
    public class upload : IHttpHandler {
        
        public void ProcessRequest (HttpContext context) {
    
            for (int i = 0; i < context.Request.Files.Count; i++)
            {
                HttpPostedFile file = context.Request.Files[i];
                string fileName = Guid.NewGuid().ToString() + Path.GetExtension(file.FileName);
                file.SaveAs(context.Server.MapPath("~/") + fileName);
            }
           
    
             
        }
     
        public bool IsReusable {
            get {
                return false;
            }
        }
    
    }
    

     


    2011年12月28日 13:37
  • byte[] fileBytes = System.IO.File.ReadAllBytes(path);
            context.Response.ContentType = "application/octet-stream";
            context.Response.AppendHeader("Content-Disposition", String.Format("attachment; filename=\"{0}\"", 
    
    context.Server.UrlEncode(fileName)));
            context.Response.BinaryWrite(fileBytes);
            context.Response.End();
    

     


    GetZ 不抛弃,不放弃.
    • 已标记为答案 iwangsong 2012年1月5日 0:39
    • 取消答案标记 iwangsong 2012年1月5日 0:41
    2011年12月29日 10:48
  • 谢谢你的解答,你的方法我用过了,可惜不行,可能我做的东西(手机应用适配)有关(你的方法本身是没有问题的)~
    2012年1月1日 12:09
  • 谢谢你的方法,可惜不是我需要的,再次感谢。

    ps:没能及时回复很是歉意~

    2012年1月1日 12:10