当表单具有enctype =“multipart / form-data时,无法在数据库中插入图像

时间:2015-04-02 03:50:12

标签: java servlets

我在使用表单enctype="multipart/form-data"时遇到在我的数据库中插入图片的问题。我已经尝试使用Part类,但只返回图像的名称,而我想要图像的绝对路径。我也试过使用下面的代码

try {
    List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
    for (FileItem item : items) {
        if (item.isFormField()) {
            // Process regular form field (input type="text|radio|checkbox|etc", select, etc).
            if(item.getFieldName().equals("txtPrdModel")){
                String ProductModel = item.getString();  
            }

            // ... (do your job here)
        } else {
            // Process form file field (input type="file").
            String fieldName = item.getFieldName();
            String fileName = FilenameUtils.getName(item.getString());
            InputStream fileContent = item.getInputStream();
            // ... (do your job here)
        }
    }

此代码获取fieldName,但getString不返回任何值。 我需要使用enctype="multipart/form-data"并且需要我尝试上传的文件的绝对路径。

我使用的是netbeans 8.0.2,而servlet版本是3.1。

1 个答案:

答案 0 :(得分:1)

出于安全原因,文件的绝对路径不会作为文件名的一部分发送。您只能知道上传到服务器的文件的当前名称,因此尝试获取文件在客户端上的绝对路径是徒劳的。

获得文件名及其二进制数据后,请使用此信息将其存储在文件,数据库或您正在使用的其他数据源的特定路径中。