2

spring-mvc と jquery uploadify を使用して画像をアップロードしています。uploadify スクリプトは画像をサーバーに保存します。画像は保存されますが、uploadify は HTTP エラーをスローし、onComplete は発生しません。スクリプトが何かを返すことを確認しました。これが私のコードです。

 $(document).ready(function() {
             $('#upload').click(function() {
                 $('#uploadify').uploadifyUpload();
                    return false;
                 });
                 $('#uploadify').uploadify({
                    'uploader': 'js/uploadify/uploadify.swf',
                    'script': 'uploadcreate.htm;jsessionid=${sessionId}',
                    'multi': false,
                    'auto' : true,
                    'fileDesc': 'JPG Image Files (*.jpg),JPG Image Files (*.JPG),JPG Image Files (*.JPEG)',
                    'fileExt' : '*.jpg;*.jpeg;*.JPEG;',
                    'cancelImg': 'js/uploadify/cancel.png',
                    onComplete: function (event, queueID, fileObj, response, data) {
                        alert("as");
                        //$("#showimage").html('<img src="' + response + '" height="500" width="500" /><br />http://localhost:8080' + fileObj.filePath);

                         }
                 });
         });

私のコントローラーコードは次のとおりです。

@RequestMapping(value="/uploadcreate.htm", method = RequestMethod.POST)
    public JSONObject uploadcreate(UploadProperties uploadbean, BindingResult result, HttpServletRequest request, Model model) {
        System.out.println("started uploading");
        if (result.hasErrors()) {
            for (ObjectError error : result.getAllErrors()) {
                System.err.println("Error in uploading: " + error.getCode()
                        + " - " + error.getDefaultMessage());
            }
            return null;
        }
        String relativeWebPath = "/WEB-INF/uploads";
        String absoluteFilePath = request.getServletContext().getRealPath(relativeWebPath);
        String username = request.getUserPrincipal().getName();

        JSONObject filepath = uploadFacade.upload(uploadbean, username, absoluteFilePath);

        model.addAttribute("filePath", filepath);
        return filepath;

    }
4

1 に答える 1

0

上記の実装の主な問題は、sessionId にありました。私の春のセキュリティは、どういうわけか別のセッション ID を作成していたため、リクエストが認証されませんでした。このように、春のセキュリティ構成ファイルからセキュリティを削除しました

<intercept-url pattern="/uploadcreate.htm" filters="none" />

その後、他の問題に直面しましたが、セッションを適切に処理することで、この問題を回避しました。

于 2012-04-30T11:29:32.287 に答える