parent
ff81d43e72
commit
21bad6b9c1
@ -0,0 +1,86 @@ |
||||
/* |
||||
* Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
|
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
package com.arialyy.aria.core.common.http; |
||||
|
||||
import android.text.TextUtils; |
||||
import com.arialyy.aria.core.common.RequestEnum; |
||||
import com.arialyy.aria.core.download.DownloadGroupTarget; |
||||
import com.arialyy.aria.core.download.DownloadGroupTaskEntity; |
||||
import com.arialyy.aria.core.download.DownloadTaskEntity; |
||||
import com.arialyy.aria.core.inf.AbsTarget; |
||||
import com.arialyy.aria.core.inf.IPostDelegate; |
||||
import com.arialyy.aria.core.inf.ITarget; |
||||
import com.arialyy.aria.util.ALog; |
||||
import java.util.HashMap; |
||||
import java.util.Map; |
||||
|
||||
/** |
||||
* post处理委托类 |
||||
*/ |
||||
public class PostDelegate<TARGET extends AbsTarget> implements IPostDelegate<TARGET>, ITarget { |
||||
private static final String TAG = "PostDelegate"; |
||||
private TARGET mTarget; |
||||
|
||||
public PostDelegate(TARGET target) { |
||||
mTarget = target; |
||||
mTarget.getTaskEntity().setRequestEnum(RequestEnum.POST); |
||||
} |
||||
|
||||
@Override public TARGET setParams(Map<String, String> params) { |
||||
mTarget.getTaskEntity().setParams(params); |
||||
if (mTarget instanceof DownloadGroupTarget) { |
||||
for (DownloadTaskEntity subTask : ((DownloadGroupTaskEntity) mTarget.getTaskEntity()).getSubTaskEntities()) { |
||||
subTask.setParams(params); |
||||
} |
||||
} |
||||
return mTarget; |
||||
} |
||||
|
||||
@Override public TARGET setParam(String key, String value) { |
||||
if (TextUtils.isEmpty(key) || TextUtils.isEmpty(value)) { |
||||
ALog.d(TAG, "key 或value 为空"); |
||||
return mTarget; |
||||
} |
||||
Map<String, String> params = mTarget.getTaskEntity().getParams(); |
||||
if (params == null) { |
||||
params = new HashMap<>(); |
||||
mTarget.getTaskEntity().setParams(params); |
||||
} |
||||
params.put(key, value); |
||||
if (mTarget instanceof DownloadGroupTarget) { |
||||
for (DownloadTaskEntity subTask : ((DownloadGroupTaskEntity) mTarget.getTaskEntity()).getSubTaskEntities()) { |
||||
subTask.setParams(params); |
||||
} |
||||
} |
||||
return mTarget; |
||||
} |
||||
|
||||
@Override public void start() { |
||||
mTarget.start(); |
||||
} |
||||
|
||||
@Override public void stop() { |
||||
mTarget.stop(); |
||||
} |
||||
|
||||
@Override public void resume() { |
||||
mTarget.resume(); |
||||
} |
||||
|
||||
@Override public void cancel() { |
||||
mTarget.cancel(); |
||||
} |
||||
} |
@ -0,0 +1,31 @@ |
||||
/* |
||||
* Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
|
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
package com.arialyy.aria.core.inf; |
||||
|
||||
import java.util.Map; |
||||
|
||||
/** |
||||
* post 通用处理接口 |
||||
*/ |
||||
public interface IPostDelegate<TARGET extends ITarget> { |
||||
|
||||
/** |
||||
* 设置Post请求参数 |
||||
*/ |
||||
TARGET setParams(Map<String, String> params); |
||||
|
||||
TARGET setParam(String key, String value); |
||||
} |
@ -0,0 +1,21 @@ |
||||
# coding=utf-8 |
||||
|
||||
import os |
||||
from flask import Flask, send_from_directory, request |
||||
|
||||
app = Flask(__name__) |
||||
|
||||
|
||||
@app.route("/download/<path:filename>", methods=['POST', 'GET']) |
||||
def downloader(filename): |
||||
""" |
||||
不支持断点的下载 |
||||
""" |
||||
data = request.values.get('key') |
||||
print data |
||||
dirpath = 'D:/test' |
||||
return send_from_directory(dirpath, filename, as_attachment=True) # as_attachment=True 一定要写,不然会变成打开,而不是下载 |
||||
|
||||
|
||||
if __name__ == '__main__': |
||||
app.run(host='0.0.0.0', debug=True) # 需要关闭防火墙 |
@ -0,0 +1,62 @@ |
||||
# -*- coding: utf-8 -*- |
||||
import os |
||||
from flask import Flask, request, url_for, send_from_directory |
||||
from werkzeug import secure_filename |
||||
|
||||
ALLOWED_EXTENSIONS = set(['png', 'jpg', 'jpeg', 'gif', 'rar', 'apk']) |
||||
|
||||
app = Flask(__name__) |
||||
app.config['UPLOAD_FOLDER'] = 'd:/db/' |
||||
app.config['MAX_CONTENT_LENGTH'] = 1600 * 1024 * 1024 |
||||
|
||||
""" |
||||
可以选择这个扩展 |
||||
Flask-Uploads |
||||
""" |
||||
|
||||
html = ''' |
||||
<!DOCTYPE html> |
||||
<title>Upload File</title> |
||||
<h1>图片上传</h1> |
||||
<form method=post enctype=multipart/form-data> |
||||
<input type=file name=file> |
||||
<input type=submit value=上传> |
||||
</form> |
||||
''' |
||||
|
||||
|
||||
def allowed_file(filename): |
||||
return '.' in filename and \ |
||||
filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS |
||||
|
||||
|
||||
@app.route('/uploads/<filename>') |
||||
def uploaded_file(filename): |
||||
return send_from_directory(app.config['UPLOAD_FOLDER'], |
||||
filename) |
||||
|
||||
|
||||
@app.route('/', methods=['GET', 'POST']) |
||||
def test(): |
||||
return'test' |
||||
|
||||
|
||||
@app.route('/upload/', methods=['GET', 'POST']) |
||||
def upload_file(): |
||||
print 'upload' |
||||
if request.method == 'POST': |
||||
print 'post' |
||||
file = request.files['file'] |
||||
print file |
||||
if file and allowed_file(file.filename): |
||||
print 'start save' |
||||
filename = secure_filename(file.filename) |
||||
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) |
||||
# file_url = url_for('uploaded_file', filename=filename) |
||||
# return html + '<br><img src=' + file_url + '>' |
||||
return '200' |
||||
return '405' |
||||
|
||||
|
||||
if __name__ == '__main__': |
||||
app.run(host='0.0.0.0', port=5000) |
Loading…
Reference in new issue