gpt4 book ai didi

python - 如何在flask应用程序中解析Cordova/Phonegap文件上传

转载 作者:太空宇宙 更新时间:2023-11-03 17:50:49 27 4
gpt4 key购买 nike

我一直在使用 Ionic 框架开发 Cordova 应用程序。我正在尝试对我的 Python-Flask 后端进行“文件传输”,但我不断收到“400 Bad Request”。我很确定这个错误是由flask中的请求解析方法引起的(我目前使用的是“request.file[]”)。

但我似乎不知道如何正确解析 POST 请求。

POST 以 chunkedMode 发送,mime 类型为“image/jpeg”,不确定这是否会产生任何影响(我的 Nginx 代理设置为在分块模式下正确接收 POST)。

我的客户端代码:

$scope.getPhoto = function() {
$scope.modal.show();
navigator.camera.getPicture(
// Succes
function(imageURI){
// Upload image
var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = imageURI.substr(imageURI.lastIndexOf('/')+1);
options.mimeType = "image/jpeg";
options.trustAllHosts = true;
options.chunkedMode = true;
var ft = new FileTransfer();
// Initiate upload
ft.upload(imageURI, encodeURI("http://192.168.1.53/"),
// Succes
function(succes){
alert(succes.response);
console.log(succes.response);
},
function(error){
alert(error.target);
console.log(error);
},
options
);
},
// Error
function(message) {
console.log('get picture failed');
},
// Options
{
quality: 100,
encodingType: Camera.EncodingType.JPEG,
allowEdit : false,
correctOrientation: true,
destinationType: navigator.camera.DestinationType.FILE_URI,
sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY
}
);

我在 PHP 中使用了以下代码:

if(isset($_FILES["somefile"]))
{
//Filter the file types.
if ($_FILES["somefile"]["error"] > 0)
{
echo "error:" + $_FILES["somefile"]["error"];
}
else
{
callSomeFunction();
}

} // End of function

我当前的 Flask 应用程序看起来像这样:

@app.route("/", methods=["GET", "POST"])
def upload_file():
if request.method == "POST":
file = request.files["file"]
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config["UPLOAD_FOLDER"], filename))
#fileStream = file.stream
#print(opencvDataFromStream(fileStream))
#processImage(filename)
return processImage(filename)
return """
<!doctype html>
<title>Upload new File</title>
<h1>Upload new File</h1>
<form action="" method=post enctype=multipart/form-data>
<p><input type=file name=file>
<input type=submit value=Upload>
</form>
"""

正如您所看到的,它返回一个表单,当通过表单发送 POST 时,请求将按预期进行处理。但是,当通过跨侧 Cordova 客户端发送 POST 请求时,我收到错误请求错误。

有人知道如何解决这个问题吗?

真诚的 flask n00b。

最佳答案

所以我搞砸了...该错误的原因很简单,因为客户端中的 fileKey(“imageToScan”)参数与我的 Flask 后端所期望的 fileKey(“file”)不同。

关于python - 如何在flask应用程序中解析Cordova/Phonegap文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29118952/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com