如何使用Cordova文件传输和php上传将文件上传到AWS S3

问题描述

我正在尝试使用cordova文件传输插件和服务器上的php脚本,将我的cordova应用程序中的文件上传到s3存储桶中,以保持我的AWS凭证。 我之所以选择这种方法,是因为由于我不是专业的程序员,因此对我来说更容易实现。 但是问题是我似乎无法使我的应用上载成功。 只是什么都没显示。

但是,当我从普通的html格式上传文件时,它可以正常工作, 像这样

<form action="itemImages_upload-copy.php" method="POST" enctype="multipart/form-data">
    <input type="file" name="image" />
    <button type="submit">Button</button>
</form>

请协助! 我不知道我在做什么错。

这是我的cordova javascript:

    document.getElementById('itemUpload_btn').addEventListener('click',upload_itemPics);

function upload_itemPics() {
    var imagesUploaded = 0;
    var itempics = dmx.parse('images.items')

    itempics.forEach(uploadImage);
    function uploadImage(itemPic) {
        var options = new FileUploadOptions();
        options.fileKey = "file";
        options.fileName = itemPic.substr(itemPic.lastIndexOf('/') + 1);
        options.mimeType = "image/jpeg";
        options.httpMethod = "POST";
        options.headers = {
            Connection: "close"
        };

        var params = {};
        params.value1 = "test";
        params.value2 = "param";

        options.params = params;
        options.chunkedMode = false;

        var ft = new FileTransfer();
        ft.upload(itemPic,"https://test.makitiplus.com/itemImages_upload-copy.php",function (result) {
            dmx.app.set('ItemPicLink',result.response);
            dmx.app.set('loadingMsg','Uploaded ' + imagesUploaded + '/' + itempics.length);
            imagesUploaded++;
            if (imagesUploaded === itempics.length) {
                setTimeout(dmx.app.set('uploadStatus','images Uploaded'),500);
                dmx.app.set('loadingMsg','Uploading Audio');
                uploadAudio();
                closeLoading();

            }

        },function (error) {
            alert('error : ' + JSON.stringify(error));
        },options);
    }

}

这是我的PHP代码

<?php
    
    if(isset($_FILES['image'])){
        $new_image_name = "itemImg_".md5(uniqid()).".jpg";
        $file_name = $_FILES['image']['name'];   
        $temp_file_location = $_FILES['image']['tmp_name']; 
        

        require 'vendor/autoload.php'; 

        $s3 = new Aws\S3\S3Client([
            'region'  => 'eu-west-3','version' => 'latest','credentials' => [
                'key'    => "AKIAXBDN5WFIABIKD4AV",'secret' => "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",]
        ]);     

        $result = $s3->putObject([
            'Bucket' => 'mk-itemimages','Key'    => $new_image_name,'SourceFile' => $temp_file_location,'ACL' => 'public-read'          
        ]);
        echo $result['ObjectURL'];
    }

?>




解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...