-5

我想使用 servlet 在服务器上上传图像文件,但我没有使用 HTML5。我在stackoverflow上看到了很多上传图片的问题,但大多数答案都是使用PHP。我已经尝试通过使用 FileReader.readAsDataURL() 方法在 java 脚本中读取客户端的图像文件,然后将其发送到服务器端并通过 BASE64 解密再次制作一个 .jpg 文件。但是制作的文件不能被计算机读取。所以请帮我解决这个问题。其他一些上传方法也值得赞赏。请回答我有关 JAVA JAVA JAVA 的问题。我也想用AJAX :) 谢谢。

我已经完成了使用 servlet 上传图像文件。它工作正常。我正在尝试使用 AJAX 上传图像。我通过 AJAX 请求调用相同的 servlet。但它不起作用。我使用的是 common-fileupload.jar 和 common-io.jar。片段看起来像: List items = new FileUpload(new DiskFileItemFactory()) .parseRequest(request);
此代码不适用于 Ajax 我将 dataForm 对象作为数据发送。

data = new FormData();
jQuery.each($('#file')[0].files, function(i, file) {
data.append('file-'+i, file);
});

ajax 请求如下所示:

$.ajax({
type : "POST",
data: data,
cache: false,
url : "/uploadImage/upload", 
contentType: false,    
processData: false,
success : function() {
alert("Done..!!");
}
});
4

1 回答 1

0

1)首先创建一个html表单发送多方请求。你可以看到创建一个html表单上传文件的吹链接http://www.caucho.com/resin-3.0/jsp/tutorial/multipart.xtp

2)创建一个java动态web项目并添加一个servert。看看这个样本http://helloworldprograms.blogspot.com/2010/12/dynamic-web-project-eclipse.html

3)创建一个servlet并使用此代码上传我使用com.oreilly.servlet.MultipartRequest库

private void uploadImage(HttpServletResponse response,HttpServletRequest request) throws IOException
{
    String dirName = request.getSession().getServletContext().getRealPath("/temp/");
    String fileName = null;
    MultipartRequest multi=null;

    try{
        multi= new MultipartRequest(request, dirName,1024*1024, "ISO-8859-1");
    }catch (IOException ex){
        ex.printStackTrace();

    }
    try{     
        Enumeration files = multi.getFileNames();

        while (files.hasMoreElements()){
            String name = (String) files.nextElement();
            fileName = multi.getFilesystemName(name);
        }
        String filePath = dirName +  System.getProperty("file.separator") + fileName;
        File clientImage = new File(filePath);



    } catch (Exception ioe){
        ioe.printStackTrace();
        logger.info("\nFile does not exist or cant delete\n");
    }       
}
于 2012-11-29T07:15:29.503 回答