我有一個文件上傳組件的陣營,使一個POST到我的Rails API:獲取文件名從文件上傳陣營前端
class uploadFormState {
@observable file;
constructor() {
this.file = '';
}
@action.bound setFile(file){
this.file = file[0];
this.fileName = file[0].name;
}
@action.bound uploadFile() {
$.ajax({
url: AppConstants.APIEndpoints.USERLOCATIONS + '/1/photos/1/upload',
headers: { "Authorization": localStorage.getItem('authToken') },
data: this.file,
processData: false,
contentType: false,
type: 'POST',
success: function (data) {
alert(this.data.name + " uploaded successfully!");
}
});
}
}
export default new uploadFormState();
正如你可以在數據領域看,我試圖將原始文件名傳遞給rails後端。問題是,我不知道如何獲得這些數據參數。
我上傳的方法是這樣的:
def upload
@photo.upload_model(request.body)
end
和類方法`upload_model」看起來是這樣的:
def upload_model(model_file)
model = StorageBucket.files.new(
key: "models/#{id}",
body: model_file.read,
public: true
)
model.save
update_columns model_url: model.public_url
end
我試圖改變Ajax調用的data
場data: {file: this.file, fileName: this.file.name}
但我不確定如何從導軌側訪問這兩個參數。如果我以這種方式更改數據參數,它會導致它上傳文件object Object
。 request.body
是一個StringIO
紅寶石類型。當數據字段是this.file
(即它將文件上傳到谷歌存儲器)時,該方法本身工作,但是,文件名失去了擴展,這不是理想的。
所以總結一下,如何在Rails後端訪問上傳的文件名? ?
被成功上傳的文件?你可以添加被調用的上傳操作的日誌嗎? – Jeremie
是的,上面的代碼成功上傳模型 – quicklikerabbit
如何操作日誌? – Jeremie