国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

又拍雲(yún)端儲(chǔ)存 - 我能透過Angular.JS來使用表單提交API嗎
高洛峰
高洛峰 2017-05-15 16:49:07
0
4
760

現(xiàn)有的業(yè)務(wù)完全使用了前端Angular.JS的單頁應(yīng)用,所有請(qǐng)求均透過ajax發(fā)出。

現(xiàn)在我想實(shí)現(xiàn)在客戶端直接向又拍雲(yún)上傳文件,嘗試了angular file upload,但是提交的結(jié)果是

400: not accept, miss signature

抓包得知,policy和signature的表單資料根本沒有提交。
我是這樣寫的:

    $scope.onFileSelect = function ($files) {
        var file = $files[0]; //這里我只傳單個(gè)文件
        $scope.upload = $upload.upload({
            url: 'http://v0.api.upyun.com/youguess',
            method: 'POST',
            headers: {'Content-Type': 'multipart/form-data'},
            data: {
                signature: 'youguess',
                policy: 'youguess'
            },
            fileFormDataName: 'file',
            file: file,
            formDataAppender: function (formData, key, value) {
                if (angular.isArray(value)) {
                    angular.forEach(value, function(v) {
                        formData.append(key, v);
                    });
                } else {
                    formData.append(key, value);
                }
            }
        }).progress(function (event) {
            console.log(parseInt(100.0 * event.loaded / event.total));
        }).success(function (data, status, headers, config) {
            console.log(data);
        });
    };

我參考了這個(gè)github專案的這個(gè)和這個(gè)issues

what should I do?

我同時(shí)還有兩個(gè)疑問:

  1. signature我可以直接md5加密好寫上,這個(gè)md5直接寫在客戶端是否有安全問題?
  2. policy能不能在js中base64編碼生成,因?yàn)槲铱垂俜浇o的demo是在php內(nèi)生成的。如果可以在前端生成,把這個(gè)過程寫在前端是否也會(huì)引發(fā)安全問題?
高洛峰
高洛峰

擁有18年軟件開發(fā)和IT教學(xué)經(jīng)驗(yàn)。曾任多家上市公司技術(shù)總監(jiān)、架構(gòu)師、項(xiàng)目經(jīng)理、高級(jí)軟件工程師等職務(wù)。 網(wǎng)絡(luò)人氣名人講師,...

全部回覆(4)
世界只因有你

參考了這個(gè)issue
只要解決signature的安全問題,就可以成功上傳檔案了,謝謝大家。

解決方法:

  • 去掉headers
  • 去掉formDataAppender
為情所困

hi 我先回答你後面的兩個(gè)問題:

  • signature 的簽名是包含form_api_secret的,所以若在前端直接寫時(shí),確實(shí)會(huì)存在安全問題:其他人拿到你的form_api_secret,就可以自己寫表單把文件提交到你的空間,並使用你的流量了。

  • policy 能使用 base64 在前端產(chǎn)生。雖然 policy 是 encode 參數(shù)內(nèi)容,不存在安全問題,但因?yàn)?$signature = md5($policy.'&'.$form_api_secret);,所以還是會(huì)有上面說的安全問題。

關(guān)於代碼的問題,已邀請(qǐng) @PenaFong 來回答了。

Ty80

簽章根據(jù)需要請(qǐng)求後端生成,在前端計(jì)算會(huì)暴露form_api_secret

給我你的懷抱

http://stackoverflow.com/questions/24443246/angularjs-how-to-upload-multipart-form-data-and-a-file
http://uncorkedstudios.com/blog/multipartformdata-file-upload-with -AngularJS

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板