我对Django InMemoryUploadedFile处理有疑问。
我尝试上传一个内容如下的简单csv文件
用户名,姓名
用户1,用户1
我使用下面的代码段来获取文件数据并将其保存在本地(Django REST框架)
def put(self, request, filename, format=None):
file_obj = request.data['file']
path = default_storage.save('demo.csv',ContentFile(file_obj.read()))
但是,结果文件包含以下内容:
------ WebKitFormBoundaryJaXsjE9oec2QW6jz Content-Disposition:form-data; NAME = “demo.csv”; filename =“demo.csv”Content-Type:text / csv 用户名,用户user1,用户 ------ WebKitFormBoundaryJaXsjE9oec2QW6jz -
我使用react-dropzone Dropzone从前端服务器发送文件。
class UserUpload extends React.Component {
constructor() {
super();
this.onDrop = (acceptedFiles, rejectedFiles) => {
const file = acceptedFiles[0];
const payload = superagent.put(`${API_ROOT}/user-upload/${file.name}`).attach(file.name, file);
payload.end(callback)
}
}
render() {
return (
<Dropzone onDrop={this.onDrop}>
<p>Drop file here</p>
</Dropzone>
)
}
}
有没有办法只检索csv文件数据而没有上面的页眉和页脚?我的目的是读取csv文件,有没有办法直接读取数据而不先保存? 谢谢。
答案 0 :(得分:1)
试试此API类,
from rest_framework.views import APIView
from rest_framework.response import Response
class CSVUploadAPI(APIView):
def post(self, request):
for file in request.FILES.values():
with open(file.name, 'wb') as file_obj:
file_obj.write(file.read())
file_obj.close()
return Response("File uploaded")
如果有效,请告诉我。