java - Phonegap 文件上传 Java 服务器

标签 java servlets cordova

我正在尝试在 Java 服务器上上传图像。该文件是从 Android 设备传输的,但在服务器上保存为空。

这是服务器代码

public UploadMediaServerResponse uploadFileForFunBoard(@FormDataParam("photoPath") InputStream photoInputStream,
            @FormDataParam("photoPath") FormDataContentDisposition photoFileDetail,
            @FormDataParam("userId") int userId, @FormDataParam("mediaType") String mediaType,
            @FormDataParam("title") String title,@FormDataParam("funBoardId") int funBoardId)
    {

        MediaContenModel mediaContenModel = new MediaContenModel();
        mediaContenModel.setFunBoardId(funBoardId);
        mediaContenModel.setMediaType(mediaType);
        mediaContenModel.setUserId(userId);

        UploadMediaServerResponse uploadMediaServerResponse = new UploadMediaServerResponse();
        boolean isMediaProcessedAndUploaded = true;
        String mediaProcessingError = "";

        if (photoInputStream != null && photoFileDetail != null)
        {
            uploadMediaServerResponse = mediaService.uploadOnServer(photoInputStream,
                    photoFileDetail.getFileName(), userId+"");
            if (uploadMediaServerResponse != null
                    && !uploadMediaServerResponse.getMediaUrl().equalsIgnoreCase("ERROR"))
            {
                mediaContenModel.setImageUrl(uploadMediaServerResponse.getMediaUrl());
                logger.debug("ContentService --> createStroyline --> fearture Image url ::"
                        + uploadMediaServerResponse.getMediaUrl());
            }
            else
            {
                isMediaProcessedAndUploaded = false;
                mediaProcessingError = uploadMediaServerResponse.getMediaUrl();
                logger.debug("ContentService --> createStroyline -->  mediaProcessingError ::"
                        + mediaProcessingError);
            }
        }

        if (isMediaProcessedAndUploaded)
        {
            UploadMediaServerResponse response = funBoardService.uploadMediaContent(mediaContenModel);
            uploadMediaServerResponse.setMediaUrl(response.getMediaUrl());
        }
        else
        {
            uploadMediaServerResponse.setError("Task Failed");
            uploadMediaServerResponse.setStatus(ServiceAPIStatus.FAILED.getStatus());
        }
        return uploadMediaServerResponse;
    }

这是我的phonegap代码

var pictureSource;   
var destinationType; 


function onPhotoURISuccess(imageURI) 
{
    console.log(imageURI);
    var largeImage = document.getElementById('largeImage');
    largeImage.style.display = 'block';
    largeImage.src = imageURI;










 var options = new FileUploadOptions();
            options.fileKey="photoPath";
            options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1);
            options.mimeType="image/jpeg";



                options.params = {
                            "userId": 1,
                            "funBoardId": 3,
                            "mediaType": 'image'
                        };            


            console.log(JSON.stringify(options));

            var ft = new FileTransfer();
            ft.upload(imageURI, _BaseURL+"mobile/userService/funboard/upload", win, fail, options);



}

function onPhotoDataSuccess(imageURI) 
{ 
    var imgProfile = document.getElementById('imgProfile');
    imgProfile.src = imageURI;
    if(sessionStorage.isprofileimage==1)
    {
        getLocation();
    }
    movePic(imageURI);
}

function onFail(message) 
{
    alert('Failed because: ' + message);
}

function movePic(file)
{ 
    window.resolveLocalFileSystemURI(file, resolveOnSuccess, resOnError); 
} 

function resolveOnSuccess(entry)
{ 
    var d = new Date();
    var n = d.getTime();
    var newFileName = n + ".jpg";
    var myFolderApp = "MyAppFolder";
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSys) 
    {      
        fileSys.root.getDirectory( myFolderApp,
                {create:true, exclusive: false},
                function(directory) 
                {
                    entry.moveTo(directory, newFileName,  successMove, resOnError);
                },
        resOnError);
    },
    resOnError);
}

function successMove(entry) 
{
    alert(entry.fullPath);
    sessionStorage.setItem('imagepath', entry.fullPath);
}

function resOnError(error) 
{
    alert(error.code);
}

function capturePhotoEdit() 
{
    navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 20, allowEdit: true,
    destinationType: destinationType.DATA_URL });
}

function getPhoto(source) 
{
    navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50, 
    destinationType: destinationType.FILE_URI,
    sourceType: source });
}

function onFail(message) 
{
    alert('Failed because: ' + message);
 }



function win(r) {
            console.log("Code = " + r.responseCode);
            console.log("Response = " + r.response);
            console.log("Sent = " + r.bytesSent);
            alert(r.response);
        }

        function fail(error) {
            alert("An error has occurred: Code = " = error.code);
        }

04-14 19:33:46.010: E/FileTransfer(13550): java.io.FileNotFoundException: http:///jeeyoh/mobile/userService/funboard/upload

提前致谢

最佳答案

替换

     options.fileKey="file";

     options.fileKey="photoPath";

关于java - Phonegap 文件上传 Java 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23060307/

相关文章:

java - 如何使用Java从mysql获取最后2分钟的数据

java - 获取小盒子而不是实际字符

javascript - 如果我只有字符串,如何在 Swift 中调用类方法?

cordova - 如何对 Ionic 项目中的 config.xml 进行持久更改

java - JFormattedTextField 与 MaskFormatter 和 DateFormat

java - 如何将数据库查询映射到对象 [在 Java 中]?

java - 不显示表达式语言的值

javascript - 使用 jqGrid 编辑回调发送额外参数

java - 通过java连接android和mysql

javascript - Android 上的本地 Ajax 请求/Sencha/PhoneGap