使用默认图像文件路径在java应用程序中上传图像

时间:2016-04-21 01:04:42

标签: java nullpointerexception filenotfoundexception

因此,在尝试设置默认图像文件路径(如果用户不选择图像)时,我需要清楚地知道我忽略了什么。我在浏览按钮中使用了JFileChooser以获取图像路径(相对路径,而不是绝对路径),以便将图像路径存储在MySQL数据库中。

问题在于我的imageFileUploader课程。我试图将通用图像设置为默认值,如果用户不想上传图像。当我测试我的imageFileUploader类时,我得到一个空指针异常。我基本上有一个文本框说"没有上传文件"如果这仍然存在,那么它会上传默认图像。有人可以关注我的代码并向我提供一些我可以忽略的观点吗?我非常感激。

String imagePath = "";
            byte[] rawBytes = null;
            FileInputStream fileInputStream = null;

            if(imagePath.equals("No File Uploaded")) {//null pointer exeception here!!
                ClassLoader classLoader = this.getClass().getClassLoader();
                URL resources = classLoader.getResource("/abaApplicationImages/blankProfile.jpg");
                imagePath = resources.getFile();
            }else{
                //File fileObject = new File(imagePath);

            File fileObject = new File(imagePath);

            try {
                fileInputStream = new FileInputStream(fileObject);
            } catch (FileNotFoundException e) {

                e.printStackTrace();
                System.out.println("file not found");
            }

            int imageLength = Integer.parseInt(String.valueOf(fileObject.length()));
            rawBytes = new byte[imageLength];
            try {
                fileInputStream.read(rawBytes, 0, imageLength);
            } catch (IOException e) {

                e.printStackTrace();
                System.out.println("IO exception");

            }


        }
            return imagePath;
        }

错误讯息:

  

java.io.FileNotFoundException:at java.io.FileInputStream.open(Native   方法)在java.io.FileInputStream。(未知来源)at   abaApplication.ImageUploader.ImageUploader(ImageUploader.java:30)at at   abaApplication.ImageUploader.main(ImageUploader.java:59)文件没有   在线程" main"中发现了异常。 java.lang.NullPointerException at   abaApplication.ImageUploader.ImageUploader(ImageUploader.java:40)at at   abaApplication.ImageUploader.main(ImageUploader.java:59)

1 个答案:

答案 0 :(得分:1)

您未验证ClassLoader.getResource()是否为空。这可能是NPE的来源。

同样FileInputStream从类路径加载资源,如果文件在图像文件上不在类路径上,那么你应该直接使用$("#myTextInput").val("hello sunshine!");