5

画像をJavaサーブレット(Amazon ec2でホストされている)に送信して、後でそれをAmazon s3に転送しようとしていますが、POSTリクエストから画像を取得する方法を考えています。

コードをアップロード

リクエストは、次のようにiOS RestKit APIを介して送信されます(pic.imageDataはNSDataタイプです)。

RKParams* params = [RKParams params];

[params setValue:pic.dateTaken forParam:@"dateTaken"];
[params setValue:pic.dateUploaded forParam:@"dateUploaded"];

[params setData:pic.imageData MIMEType:@"image/jpeg" forParam:@"image"];

[RKClient sharedClient].username = deviceID;
[RKClient sharedClient].password = sessionKey;

[RKClient sharedClient].authenticationType = RKRequestAuthenticationTypeHTTPBasic;

uploadPictureRequest = [[RKClient sharedClient] post:kUploadPictureServlet params:params delegate:self];

コードスタブの解析

これは、Javaサーブレットの他の2つのパラメーターを解析する方法です。

double dateTaken = Double.parseDouble(req.getParameter("dateTaken"));
double dateUploaded = Double.parseDouble(req.getParameter("dateUploaded"));

質問

問題は、サーバー上の画像を取得して解析するにはどうすればよいですか?

4

2 に答える 2

4

Servlet 3.0マルチパートデータの読み取りをサポートしています。でのMutlipartConfigのサポートServlet 3.0servltに注釈を使用して@MutlipartConfig注釈を付ける場合、コンテナは、Multipartパーツを次の方法で使用できるようにする責任があります。

HttpServletRequest.getParts()
HttpServletRequest.getPart("name");

参照:

于 2012-07-12T05:09:41.453 に答える
3

Apache Commons FileUploadを使用して、これに沿った何か:

 // or @SuppressWarnings("unchecked")
 @SuppressWarnings("rawtypes")
 public void doPost(HttpServletRequest request, HttpServletResponse response) 
         throws ServletException, IOException {
     if (ServletFileUpload.isMultipartContent(request)) {
         final FileItemFactory   factory = new DiskFileItemFactory();
         final ServletFileUpload upload  = new ServletFileUpload(factory);

         try {
             final List items = upload.parseRequest(request);

             for (Iterator itr = items.iterator(); itr.hasNext();) {
                 final FileItem item = (FileItem) itr.next();

                 if (!item.isFormField()) {
                    /*
                     * TODO: (for you)
                     *  1. Verify that file item is an image type.
                     *  2. And do whatever you want with it.
                     */
                 }
             }
         } catch (FileUploadException e) {
             e.printStackTrace();
         }
     }
 }

FileItem次に何をすべきかを判断するには、APIリファレンスドキュメントを参照してください。

于 2012-07-12T03:30:54.860 に答える