2009-06-28 51 views
1

这里是我的方法有麻烦调用控制器Post方法

[AcceptVerbs(HttpVerbs.Post)] 
    public void SaveImage(FormCollection formValues) 
    { 
     byte[] contents = Convert.FromBase64String(Request.Form["file"]); 
     System.IO.File.WriteAllBytes(Server.MapPath(Request.Form["name"]), contents); 
    } 

是越来越张贴到这个动作方法:

public function encodeAndSave(e:MouseEvent = null):void 
    { 
     var date:Date = new Date(); 
     var by:ByteArray = PNGEnc.encode(canvas.main_bdata); 
     var req:URLRequest = new URLRequest(server_path+"Home/SaveImage"); 
     var params:URLVariables = new URLVariables(); 
     params.file = Base64.encodeByteArray(by); 
     params.name = "MyImage.png"; 
     req.method = URLRequestMethod.POST; 
     req.data = params; 
     var ldr:URLLoader = new URLLoader(req); 

     ldr.addEventListener(Event.COMPLETE, complete); 

     ldr.load(req); 

     function complete(e:Event):void 
     { 
      navigateToURL(new URLRequest("?" + Math.random()), "_self"); 

     } 

    } 

但encodeAndSave方式运行时,没有文件被保存到服务器...

有谁知道如何判断SaveImage方法是否已经运行?另外,当我在地址栏中输入: http://www.mysite.com/Home/SaveImage时,它会显示“无法找到资源”。

任何人有任何想法,为什么它会这样做,或者我能做些什么来试图找出它?

如果您需要更多信息,请让我知道,我会更新我的问题。

谢谢
马特

回答

7

我有一个麻烦[大量]与此,我到底该使用;

查看

<% using (Html.BeginForm("PhotoAdd", "Photos", FormMethod.Post, new { enctype = "multipart/form-data" })) { %> 

<input type="file" id="file" name="file" class="field" style="width:300px;"/> 

<%} %> 

控制器

var file = Request.Files["file"]; 
byte[] buf = new byte[file.ContentLength]; 
file.InputStream.Read(buf, 0, file.ContentLength); 

我不知道这是否是你要找的,但就像我说我有很多的问题,允许我的用户在我的网站上传自己的照片。

基本上我有一个视图,它包含一个“文件”类型的字段和一个“提交”按钮,用于回发事件。

然后在控制器中,我有以下;

[AcceptVerbs(HttpVerbs.Post), Authorize] 
    public ActionResult PhotoAdd(FormCollection collection) 
    { 
     try 
     { 
      var file = Request.Files["file"]; 

      byte[] buf = new byte[file.ContentLength]; 
      file.InputStream.Read(buf, 0, file.ContentLength); 

我碰到的困难是让控制器获取请求以及文件名和路径。一旦我有了,我可以将文件转换为字节数组,然后我可以将其保存到SQL数据库和图像字段。

我缺少的是在需要读取

<% using (Html.BeginForm("PhotoAdd", "Photos", FormMethod.Post, new { enctype = "multipart/form-data" })) { %> 

的加密类型,您可以拿起所选文件的文件名和路径视图的形式方法和控制器是一个最重要的事情能够抓住输入流。没有它,我发现Request.Files是空的,或者它只包含文件名,因此无法打开它。

将图像保存到数据库后,显示它是一个轻而易举的事情。

我希望这能回答你的问题。

+0

你能解释一下吗?对不起,它看起来不像是一个即插即用的东西,所以我只想弄清楚它是如何工作的,所以我可以改变它有点为我的网络应用 – Matt 2009-06-29 03:56:57