2014-12-24 1 views
0

Я хочу сделать что-то вроде этого.Как передать данные с несколькими файлами в веб-службу

1.Uploading файл из jsp в многочастном

2.Calling Сервлета

3 dopost этого сервлет я хочу вызвать webservice, который принимает весь Params, принятый в сервлете JSP вместе с многочастными данными.

dopost(javax.servlet.http.HttpServletRequest request, 
      javax.servlet.http.HttpServletResponse response){ 

    webserviceMethod(request,response); 

} 

Я застрял на третьем месте, где я могу установить все запросы Params к webservice методе. Но я не знаю, как передавать данные с несколькими файлами на этот websevice. Я этого не сделал. Как я могу сделать эту часть?

+1

См. [Здесь] (https://docs.oracle.com/javaee/7/tutorial/servlets011.htm#BABFGCHB) –

+0

спасибо peeskillet. Но это не помогает моим требованиям. Мое требование - мне нужно передать данные файла multipart (text/xml/excel и т. Д.) В параметры веб-службы. – Naveen

+0

Разве вы не читали все это? Вы можете получить все ['javax.servlet.http.Part'] (http://docs.oracle.com/javaee/6/api/javax/servlet/http/Part.html) s из запроса. Затем вы можете получить 'InputStream' от части, а также другие детали. Вы не получите его как файл .txt, поскольку он поступает из потока. Вам понадобится все необходимые преобразования –

ответ

0

Посмотрите, что JQuery плагин:

http://jquery.malsup.com/form/

Я также использую это в моем приложении вместе с Java Servlet:

uploadImage: function (e) { 
     var self = this; 
     self.ignoreDrag(e); 
     if ($('#feed_imageUploader').find('input').hasClass('error')) { 
      return; 
     } 
     //cant put this in an model - ajaxSubmit has no done callback 
     $('#img_uploaded h1').text(polyglot.t('iview.loading')); 
     $('#feed_imageUploader').ajaxSubmit({ 
      target: '#img_uploaded', 
      type: "POST", 
      url: path.apiPath + 'item.uploadImg/' + self.itemId + '/' + token, 
      dataType: "text", 
      async: true, 
      success: function() { 
       self.afterUploadImage(); 
      } 
     }); 

    }, 
afterUploadImage: function() { 
     var self = this; 
     self.changed = true; 
     var xFactorItemImage = 0; 
     var yFactorItemImage = 0; 
     var randomnumber = Math.floor(Math.random() * 10100000); 
     $('#img_uploaded').html("<img src=\"" + path.tempImage + userId + "_" + self.itemId + ".jpg?id=" + randomnumber + "\" style=\"display:none\" id=\"cropPhoto_uploaded\">"); 
     var theImage = new Image(); 
     var cropPhoto = $('#cropPhoto_uploaded'); 
     theImage.src = cropPhoto.attr("src"); 
     var widthPhoto = 0; 
     var heightPhoto = 0; 
     var NwidthPhoto = 0; 
     var NheightPhoto = 0; 
     $(theImage).load(function() { 
      $('#img_uploaded h1').empty(); 
      $('#additemimage').hide(); 
      NwidthPhoto = theImage.width; 
      NheightPhoto = theImage.height; 
      cropPhoto.css({ 
       maxHeight: $('#img_uploaded').height() + 'px', 
       maxWidth: $('#img_uploaded').width() + 'px' 
      }); 
      cropPhoto.show(); 
      $('#addimage_upload').fadeIn(aSpeed.middle); 
      widthPhoto = cropPhoto.width(); 
      heightPhoto = cropPhoto.height(); 
      xFactorItemImage = NwidthPhoto/widthPhoto; 
      yFactorItemImage = NheightPhoto/heightPhoto; 
      cropPhoto.Jcrop({ 
       setSelect: helper.getMiddleSelectionOfImage(widthPhoto, heightPhoto, widthPhoto, heightPhoto), 
       bgOpacity: 0.3, 
       onChange: showItemImageCoords, 
       onSelect: showItemImageCoords 
      }); 
     }); 

     function showItemImageCoords(c) { 
      $('#x111').val(parseInt(xFactorItemImage * c.x)); 
      $('#y111').val(parseInt(yFactorItemImage * c.y)); 
      $('#x222').val(parseInt(xFactorItemImage * c.w)); 
      $('#y222').val(parseInt(yFactorItemImage * c.h)); 
     } 
    }, 

И сервлета части:

public void UploadImage(HttpServletRequest request, String filename, String folder,String bucketname) { 
    File file; 
    PropertyReader mainconf = new PropertyReader(); 
    DiskFileItemFactory factory = new DiskFileItemFactory(); 
    ServletFileUpload upload = new ServletFileUpload(factory); 
    List items ; 
    mainconf.getProb("conf/MainConfig.properties"); 
    s3 s3=new s3(); 
    try { 
     items = upload.parseRequest(request); 
     // Process the uploaded file items 
     Iterator i = items.iterator(); 

     //Iterate through the items 
     String finalPath = ""; 
     FileItem fi; 
     while (i.hasNext()) { 
      fi = (FileItem) i.next(); 
      if (!fi.isFormField()) { 
       // Get the uploaded file parameters    
       String your_os = System.getProperty("os.name").toLowerCase(); 
       String workingDir = "images"; 
       finalPath = mainconf.read("imagePath"); 
       if (your_os.indexOf("win") >= 0) { 
        finalPath = finalPath + workingDir + "\\" + folder + "\\"; 
       } else if (your_os.indexOf("nix") >= 0 || your_os.indexOf("nux") >= 0) { 
        finalPath = finalPath + workingDir + "/" + folder + "/"; 
       } else { 
        finalPath = finalPath + workingDir + "{others}" + folder + "{others}"; 
       } 
       file = new File(finalPath + filename + ".jpg"); 
       fi.write(file); 
       s3.writeFile(bucketname, file, filename+".jpg"); 
       file.delete(); 

      } 
      break; 
     } 

    } catch (Exception ex) { 
     Logger.getLogger(UploadItemImage.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 
+0

Fabian. Спасибо заранее.Сейчас я отправил свой вопрос, как-то обманчивый. позвольте мне пояснить. im загрузить файл (текст/xml и т. д.) из jsp в многострочном зашифрованном виде, оттуда он вызывает сервлет. В dopost этого сервлета мне нужно передать эти многостраничные данные в веб-сервис. Я могу добавить скрытые параметры с помощью annotatin @FormDataParam в этот веб-сервис. Я хочу передать многостраничные данные файла в webservice внутри servlet dopost(), так как я получаю многопрофильные данные файла в запросе. – Naveen

+0

А, ок. Возможно, для других интересно также, почему вы хотите сделать это - может быть, есть более простой/лучший способ;) –