2009-11-09 5 views
0

Je reçois l'erreur suivante lors du chargement d'un fichier.Comment télécharger l'image

Le dictionnaire des paramètres contient un entrée nulle pour le paramètre 'category_id' de type non annulable 'System.Int32' pour la méthode « System.Web.Mvc.ActionResult addProduct (Int32, System.String , Simple, System.String, System.String, System.String, System.String, System.String, System.String) 'dans ' Ecommerce.Controllers.AdminController '. Pour rendre un paramètre facultatif, son type doit être un type de référence ou un type Nullable. Nom du paramètre: paramètres

J'utilise une boîte de dialogue.

La vue

<script type="text/javascript"> 
     $(function() { 
     $("#dialog").dialog({ 
      bgiframe: true, 
      height: 140, 
      modal: true, 
      autoOpen: false, 
      resizable: false 
      }) 
    }); 

</script> 

<div id="dialog" title="Upload files"> 
    <% using (Html.BeginForm("Upload", "File", FormMethod.Post, new { enctype = "multipart/form-data" })) 
     {%> 
      <p><input type="file" id="fileUpload" name="fileUpload" size="23"/> </p> 
      <p><input type="submit" value="Upload file" /></p> 
     <% } %> 
</div> 

<p> 
    <label for="image_name">image_name:</label> 
    <a href="#" onclick="jQuery('#dialog').dialog('open'); return false">Upload File</a> 

    <%= Html.ValidationMessage("image_name", "*") %> 
</p> 

L'action du contrôleur

public ActionResult AddProduct(int category_id, string product_name, float product_price, string product_desc, string weight, string image_name, string img_content, string available_qty, string isFeature) 
{ 

    foreach (string inputTagName in Request.Files) 
    { 
     HttpPostedFileBase file = Request.Files[inputTagName]; 
     if (file.ContentLength > 0) 
     { 
      string filePath = Path.Combine(HttpContext.Server.MapPath("../Uploads"), Path.GetFileName(file.FileName)); 
      string filecontent = Path.Combine(HttpContext.Server.MapPath("../Uploads"), Path.GetFileName(file.ContentType)); 

      image_name = Path.GetFileName(file.FileName); 
      img_content = Path.GetFileName(file.ContentType); 

      file.SaveAs(filePath); 
     } 
    } 

    AdminImplementation _adminImplementation = new AdminImplementation(); 

    Boolean isfeature = Convert .ToBoolean(isFeature); 

    if (isfeature) 
    { 
     isFeature = "Featured"; 
    } 
    else 
    { 
     isFeature = "NotFeatured"; 
    } 


    int i = _adminImplementation.addproduct(category_id, product_name, product_price, product_desc, weight,image_name ,img_content ,available_qty ,isFeature); 

    ViewData["succm"] = "Product added successfully"; 
    return View(); 
} 

S'il vous plaît suggérer quelques réponses utiles.

Merci

Ritz

+0

Nous allons également avoir besoin de la signature de la méthode. – Kezzer

+0

Maintenant que j'ai corrigé votre réponse, veuillez fournir le ViewResult qui restitue la page initialement. J'ai besoin de savoir où sont les valeurs manquantes. De plus, si vous ne savez pas pourquoi cette erreur se produit, je vous recommande de visiter www.asp.net/mvc/ car il semble que vous ne compreniez pas certains éléments de base des architectures MVC dans ASP.NET. – Kezzer

Répondre

1

Me semble que vous ne fournissez pas tous les paramètres nécessaires à un ActionResult spécifique. category_id n'est pas fourni à AddProduct. Vous devez nous montrer votre code pour que nous puissions savoir ce qui ne va vraiment pas.

Comment appelez-vous ActionResult?

1
**UPLOADING IMAGE AND SAVING PATH IN THE DATABASE 
________________________________________________________________________________________ 
<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Insert title here</title> 
</head> 
<body> 
<div> 
      <h3> Choose File to Upload in Server </h3>   
      <form action="Recent" method="post" enctype="multipart/form-data"> 

      <input type="file" name="file" /> 
      <input type="submit" value="upload" /> 
      </form>   
     </div> 


</body> 
</html> 
____________________________________________________________________________________________ 

import java.sql.*; 
import java.io.*; 

import javax.servlet.ServletException; 
import javax.servlet.annotation.MultipartConfig; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.Part; 
import javax.servlet.annotation.MultipartConfig; 
import javax.servlet.annotation.WebServlet; 
import java.util.Hashtable; 
import java.util.List; 

import org.apache.commons.fileupload.FileItem; 
import org.apache.commons.fileupload.ParameterParser; 
import org.apache.commons.fileupload.disk.DiskFileItemFactory; 
import org.apache.commons.fileupload.servlet.ServletFileUpload; 


/** 
* Servlet implementation class Recent 
*/ 
@WebServlet("/Recent") 
@MultipartConfig 
public class Recent extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    /** 
    * @see HttpServlet#HttpServlet() 
    */ 
    public Recent() { 
     super(); 
     // TODO Auto-generated constructor stub 
    } 

    /** 
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

     // TODO Auto-generated method stub 
     Sample s1=new Sample(); 
     final String UPLOAD_DIRECTORY = "/home/pradeep/Documents/pradeep/WebContent/Images"; 
     if(ServletFileUpload.isMultipartContent(request)){ 
       try { 
     List<FileItem> multiparts = new 
          ServletFileUpload(new DiskFileItemFactory()).parseRequest(request); 

        for(FileItem item : multiparts){ 
         if(!item.isFormField()) 
         { 
          String name = new File(item.getName()).getName(); 
          item.write(new File(UPLOAD_DIRECTORY + File.separator + name)); 
          String Path= "/home/pradeep/Documents/pradeep/WebContent/Images/" +name; 


          s1.connecting(Path); 


         } 
        } 

         request.setAttribute("message", "File Uploaded Successfully"); 
       } catch (Exception ex) { 
        request.setAttribute("message", "File Upload Failed due to " + ex); 
       }   

      }else{ 
       request.setAttribute("message", 
            "Sorry this Servlet only handles file upload request"); 
      } 



       request.getRequestDispatcher("/Result.jsp").forward(request, response); 




    } 

} 
__________________________________________________________________________________________ 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 

import dbconnections.Connections; 



public class Sample { 
    Connections con=new Connections(); 

    public void connecting(String Path) 
    { 
     Connection conn=con.Connect(); 

     PreparedStatement pst; 
     String query="INSERT INTO Student1 (Path) values (?)"; 
     try { 

      pst=conn.prepareStatement(query); 
      pst.setString(1,Path); 
      pst.executeUpdate(); 

     } catch (SQLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     // TODO Auto-generated method stub 
    } 


} 
Questions connexes