日期:2014-05-20  浏览次数:20794 次

如何用java程序实现上传文件到指定的URL地址
有一个网站www.tineye.com 他有一个上传图片的表单
表单内容如下
<form id="upload_form" method="post" action="http://www.tineye.com/search" enctype="multipart/form-data">
  Upload image 
  <input id="upload_box" type="file" name="image" onchange="display_throbber(); this.form.submit()title="Upload an image" />
  <input type="submit" id="file_submit" value="Search" class="submit"/>
</form>

请问怎么用JAVA程序(不是JSP)上传一张图片到action指定的URL中啊???有具体代码最好 谢谢

------解决方案--------------------
用httpclient
------解决方案--------------------
找hessian看看就知道了,这个其实很简单的,如果搞不定再问我
------解决方案--------------------
不过如果服务器端代码不可改的话这个就用不聊了,得在看看HTTP协议编程相关的
------解决方案--------------------
最传统的方法是自己写IO流,还可以使用工具,fileupload或smartupload
------解决方案--------------------
网上有好多的,搜个看看吧,大概就是创建个File,然后使用fileoutputstream将这个file写到服务器端
------解决方案--------------------
楼主是用成熟的上传JAR包吧,比如fileupload等
自己写就很麻烦了,需要了解底层HTTP协议
------解决方案--------------------
HTTPClient应该是可以的, 你需要用你的浏览器采访那个网站,抓包, 之后你使用HttpClient模拟所有你上传文件的步骤, 
因为中途可能会接受一些session cookies, refer等http header, 单纯直接post到那个URL可能不行
------解决方案--------------------
用JS实现吧,直接调用网页中原来的JS方法,你只要改下file button的value就可以了。

JAVA代码上传,你没服务器的权限怎么传。先黑了它?
------解决方案--------------------
Java code
//保存图片
    private void saveImg(HttpServletRequest request,FormFile imgFile,FileForm fileForm){
        if (imgFile != null && imgFile.getFileSize() > 0) {
            String fileName = imgFile.getFileName();
            String sqlPath = "img/" + fileName;
            //图片所在路径
            String savePath = request.getSession().getServletContext().getRealPath("/")+ "img\\" + fileName;
            System.out.println(fileName);
            System.out.println(sqlPath);
            System.out.println(savePath);
            HttpSession session=request.getSession();
            session.setAttribute("savePath", savePath);
            session.setMaxInactiveInterval(60*60);
            //String savePath1=(String)session.getAttribute("savePath");
            // 数据库
            fileForm.getFile().setFileEmpPhoto(sqlPath);
            // 文件
            try {
                InputStream input = imgFile.getInputStream();
                FileOutputStream output = new FileOutputStream(savePath);
                byte[] b = new byte[1024];
                while (input.read(b) != -1) {
                    output.write(b);
                    b = new byte[1024];
                }
                output.close();
                input.close();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }