我正在尝试将pdf文件上传到表单ID为文件名的网站(Flask服务器)
id = 1的表单示例,因此我需要将'arquivos / 1.pdf'上传到其中,我试图使用scrapy.FormRequest.from_response,但是当我尝试添加 multipart时/ form-data 作为服务器无法找到或接收文件的Content-Type标头。
<title>Upload 1 new File</title>
<h1>Upload 1 new File</h1>
<form id=1 action="" method=post enctype=multipart/form-data>
<p><input type=file name=file>
<input type=submit value=Upload>
</form>
草率代码
filename = '../arquivos/%s.pdf' % 1
with open(filename, mode='rb') as file:
yield scrapy.FormRequest.from_response(response, formid=1, formdata={'file': file, }, headers={'Content-Type': 'multipart/form-data'})
烧瓶服务器代码段
if request.method == 'POST':
print(request.headers)
print(request.files['file'])
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))
return redirect(url_for('index'))
答案 0 :(得分:1)
该功能为still in PR,根据您的经验,在现有的Scrapy文档中找不到任何对多部分表单数据的引用。
可以对此问题进行投票,但是,假设Scrapy允许发布“原始”请求正文,则您必须手动生成请求:-(