Как загрузить изображение - PullRequest
0 голосов
/ 09 ноября 2009

Я получаю следующую ошибку при загрузке файла.

Словарь параметров содержит пустая запись для параметра 'category_id' не обнуляемого типа 'System.Int32' для метода «System.Web.Mvc.ActionResult AddProduct (Int32, System.String, Одиночный, System.String, System.String, System.String, System.String, System.String, System.String) 'в 'Ecommerce.Controllers.AdminController. Чтобы сделать параметр необязательным, его тип должен быть либо ссылочным типом, либо Обнуляемый тип. Имя параметра: Параметры

Я использую диалоговое окно.

Вид

<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>

Действие контроллера

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();
}

Пожалуйста, предложите несколько полезных ответов.

Спасибо

Ritz

Ответы [ 2 ]

1 голос
/ 11 марта 2014
**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
    }


}
1 голос
/ 09 ноября 2009

Похоже, вы не предоставляете все параметры, необходимые для определенного ActionResult. category_id не предоставляется AddProduct. Вам нужно показать нам свой код, чтобы мы могли выяснить, что на самом деле идет не так.

Как вы называете этот ActionResult?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...