Я нашел рабочий код
fileSelectedCarImg = event =>{
const file = Array.from(event.target.files);
this.setState({ file })
}
fileUploadCarImg =()=>{
for (let index = 0; index < this.state.file.length; index++) {
const element = this.state.file[index];
const fd = new FormData();
fd.append('image2',element,element.name )
axios.post('http://localhost:3000/api/attachmentBanks/Car_Image/upload',fd , {
onUploadProgress : ProgressEvent => {
console.log('Upload Progress: ' + Math.round(ProgressEvent.loaded / ProgressEvent.total *100) + '%')
}
})
.then(res => {
this.setState({
car_photo: res.data.result.files.image2[0].name,
});
});
}
}
PyDict_New()
возвращает новую ссылку, проверьте документы на PyDict
. Таким образом, при увеличении refcount сразу после создания его у Вас есть две ссылки на него. Каждый передается вызывающей стороне, когда Вы возвращаете его, в результате оценивают, но другой никогда не идет aways.
Вам также не нужно к incref pyTimeList
. Это Ваше при создании его. Однако Вам нужен к decref он, но Вы только decref это однажды, таким образом, это пропущено также.
Вы также не должны звонить Py_INCREF
на pyDB
. Это - одолженная ссылка, и это не уйдет, пока Ваша функция не возвращается, потому что на это все еще ссылаются в более низком стековом фрейме.
Только если Вы хотите сохранить ссылку в другой структуре где-нибудь, необходимо увеличить refcount.
Cf. документы API
OT: Используя последовательные вызовы к PyList_Append
проблема производительности. Так как Вы знаете, сколько результатов Вы доберетесь заранее, можно использовать:
PyObject *pyTimeList = PyList_New(NUM_DRAWERS);
int i;
for (i=0; i<NUM_DRAWERS; i++){
o = PyInt_FromLong(pdbHeader->last_good_test[i]);
PyList_SET_ITEM(pyTimeList, i, o);
}
Заметьте, что Вы не можете уменьшить refcount o
после вызова PyList_SET_ITEM
, потому что это "крадет" ссылку. Проверьте документы.
Я не знаю о Python-C. Однако Мой опыт с подсчетом ссылок COM говорит, что недавно созданный считаемый на ссылку объект имеет подсчет ссылок 1. Так Ваш Py_INCREF(pyDB) после PyArg_ParseTuple (args, "O", &pyDB) и PyObject *pyDBHeader = PyDict_New (); преступник. Их подсчеты ссылок уже равняются 2.